Eu tenho uma configuração logrotate que se parece com isso:
/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
}
Em teoria, o que eu gostaria de fazer é, ao encontrar um arquivo de log chamado thelog.log
, girá-lo para thelog.20150622.log
e no dia seguinte para thelog.20150623.log
e assim por diante. Eu quero isso para vários arquivos de log com nomes de arquivos arbitrários, por exemplo, pode haver thelog.log
e anotherlog.log
dentro da pasta ao mesmo tempo.
O que eu realmente vejo é:
thelog.20150622.20150623.log
thelog.20150623.log
thelog.log
anotherlog.20150622.20150623.log
anotherlog.20150623.log
anotherlog.log
O motivo é que o padrão global ( /var/log/update-job/*.log
) corresponde aos arquivos girados também. Eu pensei que o logrotate era inteligente o suficiente para usar a diretiva dateformat para descobrir que um arquivo é girado, mas aparentemente esse não é o caso.
Alguma idéia de como resolver isso?
Uma solução alternativa pode ser remover delaycompress
, para que os arquivos sejam compactados para .log.gz após a rotação, para que eles não sejam mais correspondidos pelo padrão glob. Eu gostaria de encontrar uma solução menos hacky, no entanto.