possível para o aplicativo Logrotate Rails com passageiro NGINX sem reiniciar?
-
25-09-2019 - |
Pergunta
É possível fazer o Logrotate sem reiniciar o nginx (basta enviar o sinal USR1 para o nginx, ele fará o trabalho). Eu me pergunto que é possível para o meu aplicativo Rails (passageiro nginx). Não vale a pena reiniciar meus aplicativos Rails apenas para fazer um Logrotate.
Solução
Se você está falando sobre rotação do log de aplicativos Rails, pode fazer isso colocando
config.logger = Logger.new(config.log_path, 10, 1024**2)
no seu arquivo de ambiente. O segundo argumento é o número de arquivos .log que você deseja manter, e o terceiro é o tamanho dos bytes que os arquivos podem alcançar antes de serem rotacionados. Essa configuração significa 10 arquivos de 1 megabyte. Pode não ser tão configurável quanto o Logrotate, talvez (sem suporte para compactação etc.), mas permite manter todos os seus arquivos de log em seu aplicativo. Isso geralmente funciona para mim.
Também Encontrei isso Se quiser seguir a rotação de log via Nginx.
Outras dicas
A configuração do Logrotate é bem simples para diminuir isso
/path/to/rails_apps/*/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
}
a copytruncate
Basicamente, copia o conteúdo para o novo arquivo e trunca o arquivo antigo. Isso elimina a necessidade de reiniciar.