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

StackOverflow https://stackoverflow.com/questions/1050256

  •  20-08-2019
  •  | 
  •  

Pregunta

¿Cómo puedo hacer que log4j elimine archivos de registro rotativos antiguos?Sé que puedo configurar trabajos automatizados (cron para UNIX y tareas programadas 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 lenguajes de programación del sistema operativo y no quiero hacer esta parte en ellos.

¿Fue útil?

Solución

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

Otros consejos

Los registros rotan por una razón, por lo que solo guarda tantos archivos de registro. En log4j.xml puede agregar esto a su nodo:

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

El valor le dice a log4j.xml que solo mantenga 20 archivos de registro rotados. 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 usted 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

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

Instrucciones simples encontradas aquí

De 1 :

Si está intentando utilizar el Apache Log4J DailyRollingFileAppender para un archivo de registro diario, es posible que deba especificar el número máximo de archivos que se deben conservar. Al igual que RollingFileAppender, admite maxBackupIndex. Pero la versión actual de Log4j (Apache log4j 1.2.16) no proporciona ningún mecanismo para eliminar los 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 un uso futuro.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top