使用logrotate切割Nginx日志

大体上有三种方法切割nginx日志。

第一种是写个定时任务,每天零点把旧的日志重命名,并对nginx进程发送USR1信号使其重新打开日志并写入。

第二种是能过管道的方式把新产生的日志写到另外一个日志文件里。

第三种是能过logrotate来切割日志,logrotate是系统自带的服务,可以切割任何日志,不仅仅是nginx,这里推荐使用它。

步骤1

编辑 /etc/logrotate.d/nginx

vi /etc/logrotate.d/nginx

内容如下

/usr/local/nginx/logs/access.log {
daily
rotate 7
missingok
notifempty
dateext
sharedscripts
postrotate
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then
        kill -USR1 cat /usr/local/nginx/logs/nginx.pid
    fi
endscript
}

步骤2 测试是否可用

/usr/sbin/logrotate -f /etc/logrotate.d/nginx

步骤3 配置定时任务

crontab -e

然后添加一行:

0 0 * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx

Leave a Comment

豫ICP备19001387号-1