Como desativar toda a rotação do log do tomcat

4

Eu quero gerenciar a rotação de log no meu servidor usando logrotate, no entanto, o Tomcat executa sua própria rotação de log, que interage mal com o logrotate, e não consigo encontrar uma maneira de desativá-lo. Minha instância do Tomcat atualmente produz 5 tipos de log:

  • catalina.2018-01-17.log
  • mysite_access.2018-01-17.log
  • localhost.2018-01-17.log
  • host-manager.2018-01-17.log
  • manager.2018-01-17.log

Depois de algum googling eu descobri que eu posso desabilitar a rotação para os logs 'mysite' adicionando rotatable="false" no elemento <Value> apropriado em server.xml, mas nenhum dos outros logs tem <Value> elements correspondentes.

Os logs parecem estar configurados pelo arquivo logging.properties, mas não consigo encontrar a opção 'desligar a rotação' para esse arquivo. Alguém pode ajudar? Estou usando o Tomcat 8.5

    
por codebox 18.01.2018 / 09:41

3 respostas

6

Você provavelmente está usando o log JULI como o padrão na sua instância do tomcat. Tente isto

1catalina.org.apache.juli.FileHandler.rotatable = false

Em logging.properties.

Existem alguns exemplos online se você pesquisar por essa propriedade.

Se você não estiver usando esses registros para nada, basta remover ou renomear o arquivo logging.properties para parar de usar o log JULI.

    
por 23.01.2018 / 21:31
2

Acho que você está chegando na perspectiva errada. Não há nada intrinsecamente novo sobre logrotate , na verdade, ele geralmente é executado a partir de cron uma vez por dia, o que pode resultar em situações engraçadas em que você não tem ideia porque suas direções logrotate não estão funcionando .

A melhor abordagem aqui pode ser deixar os padrões de tomcat como estão (o que, de fato, são mais amigáveis para vários propósitos de backup, por exemplo), e fazem a rotação com um script simples que usa tempo de modificação de arquivo para executar a rotação (por exemplo, find /var/tomcat/logs/ -mtime +5 -name "*.log" -exec echo rm {} \; , remove echo para a coisa real).

Por pergunta relacionada , você também pode configurar o find do snippet dentro das diretivas lastaction / endscript de logrotate ou, melhor ainda, coloque-o diretamente em cron para executar em seu próprio tempo.

Outras referências:

por 24.01.2018 / 23:35
1

Apenas envie logs para o syslog, e escreva os arquivos de log com o syslog e gire conforme desejar.

    
por 18.01.2018 / 09:44