¿Cómo puedo hacer que log4j elimine archivos de registro rotativos antiguos?


¿Cómo puedo hacer que log4j elimine los archivos de registro rotativos antiguos? 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 código separado fuera en lenguajes de scripting específicos del sistema operativo. Nuestra aplicación no está escrita en lenguajes de programación del sistema operativo, y no quiero hacer esta parte de ella en ellos.

Author: skiphoppy, 2009-06-26

3 answers

RollingFileAppender hace esto. Solo necesita establecer maxBackupIndex en el valor más alto para el archivo de copia de seguridad.

 46
Author: Jared Oberhaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-26 17:38:18

Los registros giran por una razón, de modo que solo se mantienen tantos archivos de registro alrededor. En log4j.xml puedes añadir esto a tu nodo:

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

El valor dice log4j.xml para mantener solo 20 archivos de registro girados alrededor. Puede limitar esto a 5 si lo desea o incluso 1. Si su aplicación no está registrando tantos 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 su log4j.xml "MaxBackupIndex" y " maxFileSize" params.

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

log4j.appender.[appenderName].MaxBackupIndex = 15
 38
Author: rcarson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-20 01:23:25

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 los archivos de registro antiguos de la misma manera que establece maxBackupIndex para RollingFileAppender.

Las instrucciones simples se encuentran aquí

Desde 1:

Si está tratando de usar el Apache Log4J DailyRollingFileAppender para un archivo de registro diario, es posible que deba especificar el número máximo de archivos que debería conservarse. Al igual que rolling RollingFileAppender soporta 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. Intenté 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 su uso futuro.
 7
Author: user3195649,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-23 20:19:46