Miré algunas otras aplicaciones y aparentemente hay una opción postrotate
y una copytruncate
option. La opción copiar en cascada es más fácil, pero creo que es menos confiable ya que los almacenamientos intermedios no se pueden eliminar (es decir, sigue la respuesta de @Jarek Potuik) e incluso si lo son, puedes obtener entradas duplicadas o eliminadas.
Así supongamos que desea la opción postrotate
:
La opción postrotate
le permite ejecutar un comando para decirle a su aplicación a abrir el archivo (cerrar y volver a abrir). Al abrir y cerrar el archivo en Java, haría esto con un bloque sincronizado o algún tipo de bloqueo y, por supuesto, eliminar cualquier búfer.
supongamos que su aplicación se llama myapp
:
usted tendría un archivo en /etc/logrotate.d/myapp
con algo como:
/var/log/myapp/*.log {
weekly
missingok
rotate 20
compress
delaycompress
notifempty
sharedscripts
postrotate
/etc/init.d/myapp rotate-logs > /dev/null
endscript
}
El comando /etc/init.d/myapp rotate-logs
habría que señalar que la aplicación de cerrar y volver a abrir el registro archivos. La parte de señalización es bastante complicada y depende del tipo de aplicación que tengas porque Java es decir, el comando HTTP REST en el caso de un contenedor de servlets) para indicar a su aplicación que cierre y vuelva a abrir los archivos de registro.