Nginx 日志切割

来自Linux78|wiki

切割日志使用logrotate这个服务即可。

编辑/etc/logrotate.d/nginx这个文件,内容如下:

/var/log/nginx/*.log {

   weekly
   missingok
   rotate 52
   compress
   delaycompress
   notifempty
   create 0640 www-data adm
   sharedscripts
   prerotate
       if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
           run-parts /etc/logrotate.d/httpd-prerotate; \
       fi \
   endscript
   postrotate
       [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
   endscript

} 配置 说明 daily 指定转储周期为每天 weekly 指定转储周期为每周 monthly 指定转储周期为每月 rotate 转储次数,超过将会删除最老的那一个 missingok 忽略错误,如“日志文件无法找到”的错误提示 dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期 compress 通过gzip 压缩转储旧的日志 delaycompress 当前转储的日志文件到下一次转储时才压缩 notifempty 如果日志文件为空,不执行切割 sharedscripts 只为整个日志组运行一次的脚本 prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行 postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 执行该命令测试

logrotate -vf /etc/logrotate.d/nginx 这个会每周切割一次日志。

kill -USR1 cat /run/nginx.pid是给nginx发送信号,让其重新打开日志文件(Reopening the log file)。至于pid文件的路径,要根据实际情况而定,可以通过nginx -V查到。