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

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

    1. /var/log/nginx/*.log {
    2. weekly
    3. missingok
    4. rotate 52
    5. compress
    6. delaycompress
    7. notifempty
    8. create 0640 www-data adm
    9. sharedscripts
    10. prerotate
    11. if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
    12. run-parts /etc/logrotate.d/httpd-prerotate; \
    13. fi \
    14. endscript
    15. postrotate
    16. [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
    17. endscript
    18. }

    这个会每周切割一次日志。

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

    下面是日志切割后的效果。

    1. yinsigan@iZ94x9hoenwZ:~$ sudo ls /var/log/nginx
    2. access.log access.log.13.gz access.log.18.gz access.log.5.gz error.log error.log.13.gz error.log.18.gz error.log.5.gz
    3. access.log.1 access.log.14.gz access.log.19.gz access.log.6.gz error.log.1 error.log.14.gz error.log.19.gz error.log.6.gz
    4. ...

    完结。