logrotate配置
在/etc/logrotate.d/目录下创建一个配置文件例如nginx,文件内容如下:
nginx 示例如下:
/usr/local/nginx/logs/*.log {
rotate 5 # 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
notifempty #如果日志文件为空,轮循不会进行。
daily #日志文件将按日轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’
missingok #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
compress #在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
sharedscripts #表示多个日志文件之间 只执行一次logrotate
postrotate #在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
/usr/local/nginx/sbin/nginx -s reopen
endscript
}
测试日志轮询配置:
先启动nginx;
立即截断日志:
# logrotate --force /etc/logrotate.d/nginx ==》logrotate -f 是强制执行一次
[root@iZbp17avth0ympurvz5xliZ sbin]# logrotate --force /etc/logrotate.d/nginx
[root@iZbp17avth0ympurvz5xliZ sbin]# ls /usr/local/nginx/logs/
access.log error.log error.log.1.gz nginx.pid
注意:
logrotate是会自动执行的,时间是4点的时候,也可以修改配置文件来修改时间,所以不用再设定crontab文件。
更改logrotate配置后使用 /usr/sbin/logrotate /etc/logrotate.conf 使logrotate生效
===========================================
近日有台机器log切割一直没有生效,使用 /usr/sbin/logrotate /etc/logrotate.conf 手动启动logrotate发现nginxlog路径不正确,是的nginx log没有切割,磁盘经常报警。