2009-06-08 16 views
16

Ho un file di registro che ha il seguente appender aggiunto ad esso:Come sovrascrivere un file di registro in log4j?


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

il fatto è che ogni volta che corro la mia domanda, informazioni di registrazione supplementare viene aggiunto al stesso file di registro. Cosa posso fare per sovrascrivere il file ogni volta?

risposta

5

Utilizzare RollingFileAppender.

+1

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

+1

inoltre, l'invio di un altro parametro booleano con un valore falso su FileAppender, produce lo stesso risultato. – Geo

32

Se avete un appender dichiarato in questo modo in un file delle proprietà:

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 

Allora ciò che si desidera aggiungere è

log4j.appender.LOGFILE.Append=false 

Il valore predefinito è true.

Quindi, se si stanno dichiarando le appendici a livello di programmazione, ciò che si vuole fare è chiamare setAppend(false).

5

La risposta precedente di Matt è corretta tranne che utilizza un file delle proprietà. Se siete alla ricerca di un approccio programmatico, vi suggerisco di disattivare la modalità di aggiunta per modificare il codice come segue:

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

Aggiungi al tuo file XML la seguente riga:

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

Nota che a causa di parsing XML dispari in log4j, gli elementi <param> devono apparire in un blocco (non mescolati con altri tipi di elementi).

Per esempio, questo funziona:

<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> 

Ma questo non lo fa

<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> 
Problemi correlati