小剑

nginx日志分割

没想到nginx没有对日志文件的分割做直接的支持,网上搜了一通,参考了这里用了一个叫logrotate的工具实现,文中说ubuntu默认安装,我在centos7.5里发现也是默认安装的。

大概是这样工作的:

logrotate工具会去关注配置里的日志目录,发现符合分割规则后,就移动老日志文件,新建新日志文件,并通知nginx读写新的日志文件。

logrotate的配置文件在/etc/logrotate.d/,我在这个目录下新建了一个nginx2配置,内容如下:

/home/log/nginx/*log {
    create 0644 nginx nginx
    monthly
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /var/run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

根据配置的指导,logrotate会来关注/home/log/nginx/目录下的log结尾文件,每月分割一个新日志文件出来(配置中的monthly),更多的配置信息可以网上搜或者man logrotate

这里还涉及一点,我们是通过给nginx发送USR1信号来重新打开日志文件的,参考这里

:warning:英文环境下,日志分割是这么表达:log rotation,用log split搜索好像不太对,要慢慢积累中英文不同用语的对照关系。