2009-06-26 7 views
50

Comment puis-je faire en sorte que log4j supprime les anciens fichiers journaux en rotation? Je sais que je peux configurer des tâches automatisées (cron pour UNIX et tâche planifiée pour Windows), mais je le veux multi-plateforme, et je le veux dans la configuration de notre application dans notre application, plutôt que dans un code séparé en OS langages de script spécifiques. Notre application n'est pas écrite dans les langages de script OS, et je ne veux pas faire cette partie en eux.Comment puis-je faire en sorte que log4j supprime les anciens fichiers journaux en rotation?

Répondre

44

RollingFileAppender fait cela. Vous avez juste besoin de définir maxBackupIndex à la valeur la plus élevée pour le fichier de sauvegarde.

+42

Est-il possible de faire cela avec DailyRollingFileAppender? –

+3

Non, pas avec le standard - voir la réponse de l'utilisateur3195649 ci-dessous. Croyez que les Extras d'Apache pour log4j ont quelque chose de similaire. –

+0

Cela supprimera-t-il également les anciens fichiers journaux qui ont été archivés auparavant (* .log.2016-09-12) par DailyRollingFileAppender? – mvdb

37

Les journaux tournent pour une raison, de sorte que vous ne conserviez que de nombreux fichiers journaux. En log4j.xml vous pouvez ajouter à votre noeud:

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

La valeur indique log4j.xml de ne conserver que 20 fichiers journaux mis en rotation autour. Vous pouvez limiter à 5 si vous voulez ou même 1. Si votre application n'enregistre pas autant de données, et que vous avez 20 fichiers journaux couvrant les 8 derniers mois, mais que vous n'avez besoin que d'une semaine de logs, alors je pense que vous besoin de modifier vos paramètres log4j.xml "MaxBackupIndex" et "MaxFileSize".

Sinon, si vous utilisez un fichier de propriétés (au lieu du xml) et souhaitez enregistrer 15 fichiers (par exemple)

log4j.appender.[appenderName].MaxBackupIndex = 15 
+6

Est-ce que cela fonctionne avec DailyRollingFileAppender? – rogerdpack

7

Il n'existe aucune valeur par défaut pour contrôler la suppression des anciens fichiers journaux créés par DailyRollingFileAppender. Mais vous pouvez écrire votre propre Appender personnalisé qui supprime les anciens fichiers journaux de la même manière que la configuration de maxBackupIndex pour RollingFileAppender.

instructions simples trouvées here

De 1:

Si vous essayez d'utiliser Apache Log4J DailyRollingFileAppender pour un fichier journal quotidien, vous devrez peut vouloir spécifier le nombre maximum de fichiers qui doivent être gardé. Tout comme RollingFileAppender prend en charge maxBackupIndex. Mais la version actuelle de Log4j (Apache log4j 1.2.16) ne fournit aucun mécanisme pour supprimer les anciens fichiers journaux si vous utilisez DailyRollingFileAppender. J'ai essayé de faire de petites modifications dans la version originale de DailyRollingFileAppender pour ajouter la propriété maxBackupIndex. Ainsi, il serait possible de nettoyer les anciens fichiers journaux qui peuvent ne pas être nécessaires pour une utilisation future.
Questions connexes