2009-06-08 16 views
16

Je dispose d'un fichier journal qui a le appender suivant ajouté à ce:Comment remplacer un fichier journal dans log4j?


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

la chose est, chaque fois que je suis en ma demande, des informations d'enregistrement supplémentaires se joint en annexe au même fichier journal. Que puis-je faire pour écraser le fichier à chaque fois?

Répondre

5

Utilisez RollingFileAppender.

+1

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

+1

également, en envoyant un autre paramètre booléen avec une valeur false à FileAppender, donne le même résultat. – Geo

32

Si vous avez un appender déclaré comme si dans un fichier de propriétés:

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 

Alors ce que vous voulez ajouter est

log4j.appender.LOGFILE.Append=false 

La valeur par défaut est true. Par conséquent, si vous déclarez vos programmes par programme, ce que vous voulez faire est setAppend(false).

5

La réponse précédente de Matt est correcte, sauf qu'elle utilise un fichier de propriétés. Si vous êtes à la recherche d'une approche programmatique, je vous suggère de désactiver le mode append par modifier votre code comme suit:

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

Ajouter à votre fichier XML la ligne suivante:

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

Notez qu'en raison de Pour l'analyse syntaxique XML dans log4j, les éléments <param> doivent apparaître dans un bloc (non entremêlés avec d'autres types d'éléments).

Par exemple, cela fonctionne:

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

Mais cela ne

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