Logrotate是基于Crond来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的
实际运行时,Logrotate会调用配置文件/etc/logrotate.conf
可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值
/var/log/nginx/*.log /var/log/tomcat/*.log { # 可以轮询多个日志文件
daily # 每天执行一次轮询操作
size +50M # 文件大于50M就转储,优先级高于daily
dateext # 使用当期日期作为命名格式
copytruncate # 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据
create # 自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志;也可以使用 ' create 660 nginx nginx '; 指定权限和属主,属组
compress # 通过gzip压缩转储以后的日志
missingok # 如果日志丢失,不报错继续滚动下一个日志
notifempty # 当日志文件为空时,不进行轮转
rotate 7 # 最多保留之前备份7个,超出将删除,设为0不保存
}
如果等不及cron自动执行日志轮转,想手动强制切割日志,需要加-f参数;-v则显示详细信息
logrotate -fv /etc/logrotate.conf
不过正式执行前最好通过Debug选项来验证一下(-d参数),这对调试也很重要
logrotate -d -f /etc/logrotate.d/nginx
查看各log文件的具体执行情况
cat /var/lib/logrotate.status