Eu tenho um servidor Tomcat que cria logs de acesso por meio de uma válvula ( org.apache.catalina.valves.FastCommonAccessLogValve ). Essa válvula cuida de girar o arquivo de log de acesso, mas não de compactá-los ou excluí-los depois de algum tempo.
No momento, tenho um trabalho cron que usa find [...] -mtime +30 [...]
para compactar e excluir os logs. Prefiro usar logrotate, para que a rotação do log esteja em um local centralizado para todos os logs. Eu não gosto de ter uma solução separada apenas para o Tomcat.
Tentei ler a documentação do logrotate, mas ainda estou um pouco perdido. Posso usar o logrotate apenas para compactar e limpar arquivos de log? Como eu faria isso ?
Ou resolvendo o problema, existe uma válvula de log de acesso ao Tomcat que comprimirá e limpará os arquivos de log?
Obrigado pela ajuda!
Respostas:
Bastante simples que eu já vi funciona assim.
Crie um arquivo no /etc/logrotate.d chamado tomcat contendo o seguinte: -
Isso é executado diariamente , compacta o arquivo e mantém 7 dias no valor ( gire 7 ). copytruncate significa que copiará e truncará o arquivo original para que não seja necessário reiniciar o tomcat. faltando ok não irá errar se não estiver lá.
A válvula access.log pode ser alterada para não girar adicionando rotatable = false: -
fonte
Script do TimP modificado - Adicionado exclusão de arquivos muito antigos, verificação adicional de arquivos compactados antigos.
fonte
Eu não queria mudar a configuração do Tomcat, então criei um script que comprimiria os arquivos rotacionados
fonte
É surpreendentemente simples. Apenas diga ao logrotate quais arquivos você deseja especificamente girar.
nocreate
diz ao logrotate para não recriar um arquivo vazio depois de mover o antigo (se você estiver girando arquivos em uma subpasta).fonte
Para a compressão local_access_log.YYYY-MM-DD.txt, escrevi este script depois de ver este post: -
fonte
Uma solução simples fornecida aqui. Isso também inclui a opção de upload s3.
https://yottabrain.org/tomcat/tomcat-log-backup/
fonte