La página de manual de logrotatedice 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.
Estoy confundido por esto. Si no se le puede decir a un programa que cierre su archivo de registro, continuará escribiendo para siempre , no por algún tiempo . Si la compresión se pospone al siguiente ciclo de rotación, el programa continúa escribiendo en ese archivo incluso después del siguiente ciclo de rotación. ¿Cómo se pospone resolver el problema?
Entiendo que copytruncatedebería usarse cuando no se le puede decir a un programa que cierre el archivo de registro. Soy consciente de que algunos datos escritos en el archivo de registro se pierden cuando la copia está en progreso.
Estaba buscando en el archivo logrotate para couchdb, y tenía tanto copytruncatey delaycompressopciones.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Parece que no tiene sentido usar delaycompresscuando copytruncateya está allí. ¿Qué me estoy perdiendo?

copytruncate, no hay necesidad de decirle al programa que cierre su archivo de registro. Entonces, ¿no tiene sentido especificardelaycompressjunto concopytruncate?copytruncatemenos que sea absolutamente necesario , porque pierde entradas de registro. Puede usar ambas opciones si desea la otra característica quedelaycompressproporciona: la capacidad de leer el archivo de registro anterior sin necesidad de descomprimirlo primero.copytruncatesi no puedo decirle a mi programa que vuelva a cargar?No estoy seguro si entiendo completamente tu pregunta, pero si preguntas lo que pienso ... uso esto:
Esa es una buena (o al menos una) forma de matar el registro y pasar al siguiente. Para los "programas" que apestan, como la plataforma ASA de Cisco que registra toneladas de datos por segundo, funciona.
fuente
Usamos:
Esto crea una copia fija del apache
access_logaccess_log.1para que luego podamos ejecutar nuestro paquete de estadísticas como un script al final del día.Al día siguiente, logrotate comprime el archivo creando
access_log.2.zipfuente