Nginx日志切割工具logrorate
1、logrotate系统工具
linux自带logrotate工具
主流的linux系统版本,都默认安装logrotate包,作为分割日志的系统工具,可以方便将日志按周期(日,周,月)和大小进行分割,其核心配置文件如下:
/etc/logrotate.conf #核心配置
/etc/logrotate.d/ #存储自定义配置目录
2、自定义nginx日志切割规则
[root@ ~]$ mkdir /etc/logrotate.d.0/
[root@ ~]$ vim /etc/logrotate.d.0/nginx
/var/log/nginx/*.log {
create 0664 nginx root
daily
rotate 365
missingok
notifempty
compress
nodelaycompress
dateext
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/share/nginx/run/nginx.pid 2>/dev/null` || true
endscript
}
参数说明:
/var/log/nginx/*.log #定义需要切割的nginx日志的位置
create 0664 nginx root #切割后创建日志文件的权限必须有一个root权限
daily
rotate 365 #保留日志的天数
missingok #忽略错误
notifempty #空文件不滚动切割
compress
nodelaycompress
dateext #日志压缩文件以当天日期做后缀
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/share/nginx/run/nginx.pid 2>/dev/null` || true #刷新日志文件
endscript
3、然后在/etc/cron.daily/下增加配置logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
!注意要是创建的nginx日志切割规则如果在/etc/logrotate.d/下面创建nginx文件定时是在凌晨三点多切断,所以我自定义到/etc/logrotate.d.0/nginx
4、配置定时任务定时切割日志
[root@ ~]$ crontab -e
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d.0/nginx >/dev/null 2>&1
5、.执行流程