Eu encontrei várias soluções para este problema na web, nenhuma delas totalmente satisfatória, mas várias delas são aceitáveis. Estes incluíram o script rotatelogs
do próprio Apache, que envolve canalizar o log para o script junto com os argumentos que dizem ao script como dividir e nomear os arquivos.
No final, no entanto, acabei usando logrotate
. Acontece que tenho vergonha de dizer que a página de manual on-line que eu estava lendo estava desatualizada e, na verdade, o logrotate agora tem a capacidade de nomear arquivos por data, que era a coisa mais importante que eu queria.
Eu também era capaz de usar curingas para evitar ter que configurar um novo arquivo conf para logrotate toda vez que eu adicionasse um vhost no futuro.
Para qualquer outra pessoa que tente fazer isso, a configuração do logrotate que usei foi a seguinte:
/var/www/*/logs/*.log {
weekly
missingok
rotate 52
compress
delaycompress
dateext
dateformat .%Y%m%d
extension .log
olddir old
create 640 root root
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate;
fi; \
endscript
}
Tenho certeza que mudarei no futuro, mas como ponto de partida, tudo bem.
(Nota, o olddir
é necessário porque senão *.log
também corresponde ao arquivo de log da semana passada ...)