2009-06-26 23 views
50

¿Cómo puedo obtener log4j para eliminar los viejos archivos de registro en rotación? Sé que puedo configurar trabajos automatizados (cron para UNIX y tarea programada para Windows), pero lo quiero multiplataforma, y ​​lo quiero en la configuración de registro de nuestra aplicación como parte de nuestra aplicación, en lugar de en un código separado fuera del sistema operativo lenguajes de scripting específicos. Nuestra aplicación no está escrita en los lenguajes de scripting del sistema operativo, y no quiero hacer esta parte de ella en ellos.¿Cómo puedo obtener log4j para eliminar los viejos archivos de registro en rotación?

Respuesta

44

RollingFileAppender hace esto. Solo necesita establecer maxBackupIndex al valor más alto para el archivo de respaldo.

+42

¿Hay alguna manera de hacer esto con DailyRollingFileAppender? –

+3

No, no con el estándar - vea la respuesta del usuario3195649 a continuación. Creo que los extras de Apache para log4j tienen algo similar. –

+0

¿Esto también eliminará los archivos de registro antiguos que han sido archivados antes (* .log.2016-09-12) por DailyRollingFileAppender? – mvdb

37

Los registros giran por un motivo, por lo que solo conserva tantos archivos de registro. En log4j.xml puede agregar esto a su nodo:

<param name="MaxBackupIndex" value="20"/> 

El valor indica log4j.xml sólo para mantener a 20 archivos de registro rotados alrededor. Puede limitar esto a 5 si lo desea o incluso 1. Si su aplicación no está registrando esa cantidad de datos, y tiene 20 archivos de registro que abarcan los últimos 8 meses, pero solo necesita una semana de registros, entonces creo que necesita ajustar los parámetros log4j.xml "MaxBackupIndex" y "MaxFileSize".

Alternativamente, si está utilizando un archivo de propiedades (en lugar del xml) y desea guardar 15 archivos (por ejemplo)

log4j.appender.[appenderName].MaxBackupIndex = 15 
+6

¿Funciona esto con DailyRollingFileAppender? – rogerdpack

7

No hay un valor predeterminado para controlar la eliminación de archivos de registro antiguos creados por DailyRollingFileAppender. Pero puede escribir su propio Appender personalizado que borre archivos de registro antiguos de forma muy similar a la configuración de maxBackupIndex para RollingFileAppender.

instrucciones simples que se encuentran here

De 1:

Si usted está tratando de utilizar el Apache Log4J DailyRollingFileAppender para un archivo de registro diario, puede que tenga que desee especificar el número máximo de archivos que debería mantenerse. Al igual que RollingFileAppender es compatible con maxBackupIndex. Pero la versión actual de Log4j (Apache log4j 1.2.16) no proporciona ningún mecanismo para eliminar archivos de registro antiguos si está utilizando DailyRollingFileAppender. Traté de hacer pequeñas modificaciones en la versión original de DailyRollingFileAppender para agregar la propiedad maxBackupIndex. Por lo tanto, sería posible limpiar los archivos de registro antiguos que pueden no ser necesarios para el uso futuro.
Cuestiones relacionadas