使用脚本对nginx日志文件进行按天切割
#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d -1day +%Y%m%d)
cd ${LOGS_PATH}
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败
kill -USR1 `ps axu | grep nginx| grep master | awk '{print $2}'`
#压缩
gzip -9 ${LOGS_PATH}/access_${YESTERDAY}.log
#删除7天前的日志
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0
然后配置crontab进行每天切割使用
使用logrotate对nginx日志进行切割
[root@iZ25b31bdp0Z gitlab-8.5.7-0]# cat /etc/logrotate.d/nginx
/var/log/nginx/*log {
create 0644 nginx nginx
daily //可以选择weekly,monthly,切割周期
rotate 10 //一次存储10个文件,超出数量最早生成的文件会被删除
missingok //忽略错误
notifempty //空文件不存储
compress //启动压缩
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
//其它命令执行完成后,再执行postrotate与endscript中间的命令,两者是固定格式
}