比如 我们要切割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 -USR1cat /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 -USR1cat /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