Bom, como eu já havia citado neste post aqui, estava procurando alguma opção para rotacionar os logs do Tomcat sem ter que reiniciá-lo. O cronolog, na época, me pareceu uma boa opção, mas na prática se mostrou um comedor de dados de log bem complexos.
Como não havia o colocado em produção, pude ver isto em meus ambientes de homologação, o que causava alguns problemas nos debugs de aplicação.
Cheguei inclusive a pensar em uma solução, implementada em Python, que criaria um arquivo fifo de nome catalina.out, no diretório de logs do Tomcat, e este fifo, geraria um arquivo com o nome de cada dia. Mas, como não tive tempo de estudar fifo no Python, o troço seria um pouco demorado.
Numa das últimas paradas de uma aplicação por causa do tamanho dos logs, um dos meus colegas perguntou se haveria algum modo de fazer um rotate de log do Tomcat ...
Bom, lá fui eu novamente para o Google, e por incrível que pareça, há uma opção sim. Um script, feito em Perl ( sim, em breve migro esta maravilha para Python ), resolve o problema de um modo bem interessante. Você redireciona todos os logs para um programa ( script ) que gera um log com o nome do dia em questão. Ou seja, um rotate sem reiniciar o Tomcat :-) Ótimo para as famosas aplicações 24x7 .
Bom, no fim, a solução é bem fácil. Baixe o script aqui via wget ou outra opção de sua preferência, executando esta série de comandos :
# cd /path/para/o/seu/tomcat/logs/
# wget http://doylestownpa.us/webadvisor/spk_log_rotate.txt
# mv spk_log_rotate.txt spk.log.rotate
# chmod 755 spk.log.rotate
Com esta série de comandos o seu rotacionador de logs já está pronto para funcionar.
Depois, é só ir ao diretório do seu Tomcat, e seguir para o diretório bin. Faça uma cópia de segurança do seu catalina.sh e execute a seguinte troca de linhas. No seu catalina.sh ocorrerão duas destas linhas :
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
Por sua vez, as mesmas devem ser trocadas por :
2>&1 | "$CATALINA_BASE"/logs/spk.log.rotate \
"$CATALINA_BASE"/logs/catalina.out_log.%Y-%M-%D.txt &
Se não precisar mais do seu catalina.out, delete-o. Caso precise, mova-o para um nome de fácil entendimento para você.
Com isto, é só reiniciar o seu Tomcat e acompanhar os seus logs diariamente :-)
Pelo que eu vi, no site, também é citado uma forma de purge dos logs. Mas não a testei ainda ... assim que tiver um tempinho, testo e posto a solução por aqui. Me parece que há inclusive algum problema relacionado ao cron neste caso :-)