A página do manual 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 solicitado a fechar seu arquivo de log, ele continuará gravando para sempre , não por um tempo . Se a compactação for adiada para o próximo ciclo de rotação, o programa continuará gravando nesse arquivo mesmo após o próximo ciclo de rotação. Como o adiamento está resolvendo o problema?
Meu entendimento é que isso copytruncate
deve ser usado quando um programa não puder ser solicitado 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 tinha tanto copytruncate
e delaycompress
opções.
/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?
copytruncate
, não há necessidade de dizer ao programa para fechar seu arquivo de log. Então, não faz sentido especificardelaycompress
juntocopytruncate
?