Em vez de 'copytruncate', essas linhas funcionaram para mim no arquivo logrotate do meu aplicativo rails:
postrotate
touch /your-rails-directory/tmp/restart.txt
endscript
(Espero que eu tenha o site da SE correto para essa pergunta, caso contrário, você se desculpa.)
Eu tenho um aplicativo Ruby-on-Rails que é implantado usando o Apache + mod_rails (passageiro). Ele usa o MySQL para o backend do banco de dados. Estou usando SyslogLogger
para enviar o log RoR para o syslog e usar logrotate
por meio de uma tarefa cron diária para girar os logs.
O que eu descobri é que o aplicativo RoR trava se está no meio de algo quando os logs são girados. Eu tentei colocar copytruncate
na configuração logrotate
, mas parece que isso também afeta os apache
logs (talvez porque os logs de erro RoR vão para o arquivo error.log
de apache
) e - possivelmente - também os logs do MySQL (talvez - às vezes é difícil correlacionar exatamente qual log causa a falha).
Pesquisar na internet apresenta algumas soluções diferentes na rotação de log, uma é usar a tecla copytruncate
, outra é usar cronolog
, mas ainda não encontrei uma que resolva diretamente a questão. vendo.
Então, há uma solução conhecida para isso? Qual é o "caminho certo" para girar os logs em um aplicativo RoR (usando o apache e mod_rails para implantação)? Devo colocar apenas copytruncate
em todos os arquivos de configuração logrotate que estão vagamente relacionados com a aplicação?
Em vez de 'copytruncate', essas linhas funcionaram para mim no arquivo logrotate do meu aplicativo rails:
postrotate
touch /your-rails-directory/tmp/restart.txt
endscript
Eu não me incomodaria em enviar os logs do seu aplicativo Rails para o syslog. Você já tentou sua configuração logrotate ao deixar o Rails escrever seus próprios arquivos de log?