切割日志使用logrotate这个服务即可。
编辑/etc/logrotate.d/nginx这个文件,内容如下:
/var/log/nginx/*.log {weeklymissingokrotate 52compressdelaycompressnotifemptycreate 0640 www-data admsharedscriptsprerotateif [ -d /etc/logrotate.d/httpd-prerotate ]; then \run-parts /etc/logrotate.d/httpd-prerotate; \fi \endscriptpostrotate[ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`endscript}
这个会每周切割一次日志。
kill -USR1 cat /run/nginx.pid是给nginx发送信号,让其重新打开日志文件(Reopening the log file)。至于pid文件的路径,要根据实际情况而定,可以通过nginx -V查到。
下面是日志切割后的效果。
yinsigan@iZ94x9hoenwZ:~$ sudo ls /var/log/nginxaccess.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.gzaccess.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...
完结。
