Quando usar a opção delaycompress no logrotate?

29

A página man de logrotate diz que:

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

Estou confuso com isso. Se um programa não puder ser informado para fechar seu arquivo de log, ele continuará a gravar para sempre , não para algum dia . Se a compressão for adiada para o próximo ciclo de rotação, o programa continuará a gravar nesse arquivo mesmo após o próximo ciclo de rotação. Como está adiando a solução do problema?

Meu entendimento é que copytruncate deve ser usado quando um programa não pode ser informado para fechar o arquivo de log. Estou ciente de que alguns dados gravados no arquivo de log são perdidos quando a cópia está em andamento.

Eu estava olhando para o arquivo logrotate para couchdb, e ele tinha as opções copytruncate e delaycompress .

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

Parece que não faz sentido usar delaycompress quando copytruncate já está lá. O que estou perdendo?

    
por Anand Chitipothu 21.07.2011 / 04:14

3 respostas

25

Seu entendimento de copytruncate está correto, mas a redação na página de manual de delaycompress é um pouco enganosa. Mais propriamente, ele deve dizer "quando algum programa não puder ser avisado para imediatamente fechar seu arquivo de log" - por exemplo, se você estiver usando sharedscripts e o script enviar um sinal para o processo usando o log quando todos os arquivos de log foram girados.

    
por 21.07.2011 / 04:55
3

Não tenho certeza se entendi completamente sua pergunta, mas se você está perguntando o que eu penso ... eu uso isso:

postrotate
          killall -HUP syslog-ng
  endscript

Essa é uma maneira legal (ou pelo menos) de matar o log e passar para o próximo. Para "programas" que sugam, como a plataforma ASA da Cisco, que registra toneladas de dados por segundo, funciona.

    
por 15.03.2012 / 05:19
1

Nós usamos:

  • diariamente
  • delaycompress
  • nodateext

Isso cria uma cópia fixa do apache access_log access_log.1 para que possamos executar nosso pacote Stats como um script no final do dia.

No dia seguinte, logrotate comprime o arquivo criando access_log.2.zip

    
por 11.01.2018 / 02:37