我有一个如下所示的 logrotate 配置:
/var/log/update-job/*.log {
daily
rotate 7
compress
delaycompress
size 0k
missingok
copytruncate
notifempty
dateext
dateformat %Y%m%d.
extension log
su root syslog
}
理论上,我希望它的作用是,在遇到名为 的日志文件时thelog.log
,将其轮换为thelog.20150622.log
,第二天轮换为 ,依此类推。我希望对具有任意文件名的多个日志文件执行此操作,例如,文件夹中可能同时thelog.20150623.log
有thelog.log
和。anotherlog.log
我实际上看到但是:
thelog.20150622.20150623.log
thelog.20150623.log
thelog.log
anotherlog.20150622.20150623.log
anotherlog.20150623.log
anotherlog.log
原因是 glob 模式 ( /var/log/update-job/*.log
) 也与旋转的文件匹配。我以为 logrotate 足够聪明,可以使用 dateformat 指令来确定文件是否已旋转,但显然事实并非如此。
关于如何解决这个问题有什么想法吗?
一种解决方法可能是删除delaycompress
,这样文件在旋转时就会被压缩为 .log.gz,这样它们就不再与 glob 模式匹配了。不过,我想找到一个不那么黑客的解决方案。