Nginx日志切割(Rsyslog)

比如 我们要切割nginx的日志,首先我们进入/etc/logrotate.d/这个目录下,然后建立nginx这个文件

# cat /etc/logrotate.d/nginx
/opt/nginx/logs/access.log { #日志所在的目录
daily
rotate 5
missingok
dateext
compress
notifempty
sharedscripts
postrotate
[ -e /opt/nginx/logs/nginx.pid ] && kill -USR1 cat /opt/nginx/logs/nginx.pid
endscript
}

参数说明:

monthly 指定转储周期为每月

daily 指定转储周期为每天

weekly 指定转储周期为每周

rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 (这里指保留5天的备份)

compress 通过gzip 压缩转储以后的日志

copytruncate 在复制当前日志文件后,将日志文件清空;而不是将当前日志文件改名后创建一个新的

notifempty 如果是空文件的话,不转储

dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期.

[ -e /var/run/nginx.pid ] && kill -USR1 cat /var/run/nginx.pid
endscript
这个参数是为了让nginx重新生成日志的

重启syslogd服务

# systemctl restart rsyslog.service

测试

#强制执行某个日志的切换,nginx是在/etc/logrotate.d下文件的文件名

logrotate -f /etc/logrotate.d/nginx

#如果在存放日志的目录下发现了切换的日志文件,则说明切换成功

# logrotate -f /etc/logrotate.d/nginx

ls -l

total 4936
-rw-r–r– 1 www root 14304 Mar 22 21:58 access.log
-rw-r–r– 1 www www 144972 Mar 22 21:42 access.log-20170322.gz
-rw-r–r– 1 www www 4868587 Mar 22 21:41 error.log
 

 

-------------本文结束感谢您的阅读-------------