Arquivo de log do Logrotate Tomcat

2

Estou escrevendo o log do Tomcat com esta configuração:

  • Log configurado usando um AccessLogValve em server.xml

    Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/access"
    prefix="access" suffix=".log" pattern="common" rotatable="false"
    
  • Use logrotate para girar o arquivo de log diariamente e remover arquivos de log antigos.

    /app/logs/access/access.log {
        daily
        dateext
        missingok
        rotate 14
        maxage 14
        compress
        delaycompress
        dateyesterday }
    

O mais estranho é que todo dia o arquivo de log é alterado para um novo nome por logrotate , por exemplo access.log-20171222 , e um novo arquivo de log access.log é criado. No entanto, o Tomcat ainda grava log no arquivo renomeado.

Minha solução agora é adicionar a opção copytruncate ao arquivo de configuração de logrotate . No entanto, com essa opção, há uma chance de perder algum log no momento do truncamento.

Alguém pode sugerir uma solução melhor?

Obrigado.

    
por thanh dat tang 21.12.2017 / 23:28

1 resposta

1

De acordo com esta documentação, você deve manter a opção rotativa como true (padrão) para que não grave sempre no mesmo arquivo. Além disso, você pode formatar a string do nome do arquivo para um valor fixo, para que você não obtenha datas nelas. Apenas certifique-se de executar o logrotate antes da rotação interna para que o novo log não arrisque sobrescrever o último (conforme ele é renomeado).

    
por 22.12.2017 / 00:02