nginx日志文件切割

使用脚本对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中间的命令,两者是固定格式
}

你可能感兴趣的:(nginx日志文件切割)