quanto tempo o logrotate aguarda entre postrotate e compressão

0

Estou escrevendo um software e quero recarregar arquivos de log quando o processo recebe um SIGHUP de algo como logrotate. A questão é: quanto tempo o aplicativo pode usar antes que o logrotate comece a compactar o arquivo de log rotacionado?

A manpage e todas as referências que encontrei apenas afirmam que a aplicação deve recarregar os logs "imediatamente", mas não diz se isso deve ser feito em 1ms, ou 1 segundo, por exemplo.

    
por Vitor 21.06.2016 / 20:13

1 resposta

1

Para ser seguro: nenhum.

O Logrotate assume que uma vez que o comando postrotate tenha terminado, o arquivo de log não será mais gravado. Existem duas maneiras de lidar com "o fechamento de arquivos de log pode demorar um pouco":

  • A opção delaycompress do logrotate adia a etapa de compactação até a próxima próxima invocação do logrotate. Dessa forma, ele pode levar até o tempo necessário para a próxima execução de logrotate (embora fazer isso seja uma péssima ideia).
  • Você pode escrever uma ferramenta de linha de comando que instrua o daemon a fechar e reabrir o arquivo de log e certificar-se de que esse comando não saia até que o daemon confirme que todos os arquivos de log foram fechados ( não precisa esperar até que sejam reabertas também, embora isso não atrapalhe). As pessoas podem usar essa ferramenta de linha de comando das sub-rotinas postrotate do logrotate.
por 21.06.2016 / 20:47

Tags