2009-06-08 23 views
16

Tengo un archivo de registro que tiene la siguiente appender añadido a la misma:¿Cómo sobrescribo un archivo de registro en log4j?


logger.addAppender(new FileAppender(new PatternLayout(),"log.txt")); 

la cuestión es que cada vez que estoy corriendo mi aplicación, información de registro adicional se añade al mismo archivo de registro. ¿Qué puedo hacer para sobrescribir el archivo cada vez?

Respuesta

5

Utilice RollingFileAppender.

+1

enlace API (!): Http://logging.apache.org/log4j/1.2/apidocs/ org/apache/log4j/RollingFileAppender.html – AgileJon

+1

también, al enviar otro parámetro booleano con un valor falso al FileAppender, se obtiene el mismo resultado. – Geo

32

Si ha declarado un appender como tal en un archivo de propiedades:

log4j.appender.LOGFILE=org.apache.log4j.FileAppender 
log4j.appender.LOGFILE.File=file.log 
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p %c - %m%n 

Entonces lo que desea es añadir

log4j.appender.LOGFILE.Append=false 

El valor por defecto es true.

Por lo tanto, si está declarando sus apéndices mediante programación, entonces lo que quiere hacer es llamar al setAppend(false).

5

La respuesta anterior de Matt es correcta, excepto que utiliza un archivo de propiedades. Si usted está buscando un enfoque programático, sugiero que desactive el modo de agregación de modificar el código de la siguiente manera:

logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**)); 
5

Añadir a su archivo XML la siguiente línea:

<param name="Append" value="false" /> 

Tenga en cuenta que debido a las el análisis impar de XML en log4j, los elementos <param> deben aparecer en un bloque (no entremezclados con otros tipos de elementos).

Por ejemplo, esto funciona:

<appender name="appender-log" class="org.apache.log4j.FileAppender"> 
<param name="File" value="efoimporter.log" /> 
<param name="Append" value="false" /> 
<layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%m%n" /> 
</layout> 
</appender> 

Pero esto no hace

<appender name="appender-log" class="org.apache.log4j.FileAppender"> 
<param name="File" value="efoimporter.log" /> 
<layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%m%n" /> 
</layout> 
<param name="Append" value="false" /> 
</appender> 
Cuestiones relacionadas