Comment puis-je faire log4j effacer un journal au démarrage?
Je veux le journal de rouler aussi longtemps que l'application est en cours d'exécution, mais je veux le journal pour démarrer les frais lorsque l'application est redémarrée.
Mise à jour:
Basé sur erickson commentaires, mon appender ressemble à ceci:
<appender name="myRFA" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="my-server.log"/>
<param name="Append" value="false" />
<param name="MaxFileSize" value="10MB"/>
<param name="MaxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %p - %t - %c - %m%n"/>
</layout>
</appender>
J'ai simplement ajouté la ligne suivante:
<param name="Append" value="false" />
Il tronque maintenant la base de fichier de log au démarrage, mais il laisse le roulé fichiers seul.
- Pour ceux qui n'utilisent pas le format XML du fichier de propriétés: log4j.appender.fichier.Append=false
Vous devez vous connecter pour publier un commentaire.
Si vous définissez la
append
paramètrefalse
, la base du fichier journal sera qui a commencé "frais" quand le redémarrage de l'application. Voulez-vous dire que vous voulez un "roulé" journal des fichiers supprimés?log4j.appender.NNNN.Append=false
J'ai écrit certains de code personnalisé pour trouver mon
RollingFileAppender
(qui est inutilement difficile d'avoir accès à de log4j!) que j'ai ensuite entraîner à rouler sur. J'ai adapté mon code ci-dessous pour un usage unique. Je utiliser un code similaire à celui au démarrage de l'application à la force de mes journaux à rouler (si non vide) donc je commence toujours dans un journal nouveau, mais ne jamais supprimer un journal, mais la plus ancienne.Ce code prend un Enregistreur de boucles et l'enregistreur de la hiérarchie jusqu'à ce qu'il trouve un Enregistreur de frappe qui a Appenders ci-joint. Si elle ne le fait jamais, alors qu'il abandonne. Si elle le fait, elle passe en boucle sur toutes les Appenders attaché à ce Logger et pour chacun c'est une RollingFileAppender, il oblige le journal à rouler.
Quelque chose comme cela devrait être beaucoup plus facile à faire dans log4j, mais je n'ai pas trouvé un moyen plus simple de le faire.