Nginx日志切割

Nginx日志每天需要通过切割来分析,笔者采用过两种方式,一种是shell脚本,一种是利用系统自带的logrotate。笔者倾向采用shell脚本,主要是因为在CentOS6中,logrotate是由crond计划任务执行的,而cron.daily是由anacron来处理,在日志轮转的时候时间具有延迟不确定性,而nginx日志一般都希望在0点切割,时间差尽量缩小,其实通过一些方法可以将CentOS6的cron.daily遵照准确时间来执行,这里笔者暂不介绍。

shell脚本切割nginx日志:

# cat /data/shell/cut_nginx_logs.sh 

#!/bin/sh
PIDFILE=/var/run/nginx.pid
LOG_PATH="/data/wwwlogs"
DATE=`date +%Y%m%d`
LOGFILELIST="api.test.com_nginx.log www.test.com_nginx.log"
cd $LOG_PATH
for logfile in $LOGFILELIST
do
   mv $LOG_PATH/$logfile $LOG_PATH/$logfile-$DATE
   kill -USR1 `cat $PIDFILE` &>> /tmp/cut_nginx.log
   tar zcf $logfile-${DATE}.tgz  $logfile-${DATE} && rm -f $logfile-$DATE
   /bin/find $LOG_PATH -mtime +30 -type f  -name $logfile-\* | xargs rm -f
   sleep 1
done

 

posted @ 2017-05-20 01:41  elisun  阅读(264)  评论(0编辑  收藏  举报