Aller au contenu

log4j - rotation de logs


sarx

Messages recommandés

Bonjour à tous.

On vient de me confier un petit projet de refonte du système de log pour des Webservices (en java, sur un apache tomcat).

Malheureusement je n’y connais pas grand-chose la dessus, la personne qui était en charge des WS n’étant plus la et le passage de connaissance ayant été expédié en quatrième vitesse, je me retrouve un peu largué.

Nos WS utilisent log4j (v1.2.15) pour la gestion des logs, et dans le log4j.properties je vois que nous utilisons l’appender RollingFileAppender pour faire une rotation des logs quand le fichier atteint une certaine taille, avec une création de BackupIndex limité avant compression/purge.

Bref, mécanisme intéressant, qui fonctionne très bien, ca nous permet d’avoir un historique des logs assez complet sans surcharger le file system et sans que les fichiers deviennent des monstres a transférer/ouvrir.

L’évolution qui m’a été demandé consisterait a changer le mécanisme, pour avoir une rotation des logs quotidienne.

En fouillant un peu dans les docs et sur le net j’ai vu qu’il existait l’appender DailyRollingFileAppender, qui semble a priori correspondre a ce qu’on voudrait.

On définit le nom et l’emplacement des logs, on défini le pattern de rotation, et ca roule :)

Par contre, il reste tout de même un point un peu obscur. J’ai beau chercher dans la doc et sur le net je ne trouve pas ma réponse.

En utilisant DailyRollingFileAppender on ne peut définir que le pattern de rotation, i.e. la fréquence de création du fichier de log.

Par contre, quid du nombre de fichiers ‘backup’ conservé ? J'ai vu qu'il n'était pas possible d'utiliser l'option MaxBackupIndex avec cet appender, mais existe t'il tout de même un mécanisme de la sorte "par défaut" ?

Est-il possible d’indiquer dans les properties un nombre de fichier à conserver avant de purger les plus anciens ?

Ou est-il possible d’utiliser DailyRollingFileAppender en parallèle de RollingFileAppender, histoire d’avoir à la fois une création d’un fichier de log chaque jour, tout en conservant le mécanisme de rotation/purge par taille et nombre de fichier ?

Merci de vos réponses.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

peut-être qu'utiliser un RollingFileAppender avec une maxFileSize super grande (beaucoup trop en fait) et déclencher un rollOver() dessus une fois par jour ça ferait le boulot, mais ça serait bien tordu et pas simple pour le malheureux qui devrait reprendre la conf après. L'avantage par contre, c'est qu'on peut combiner les deux. Ou l'inconvénient supplémentaire, suivant comment on se place.

En plus ça implique de modifier le code du WS pour caser le code qui fait la rotation des logs.

N.B.: je n'ai jamais essayé et je ne pense pas que ça m'arrivera un jour de le faire, donc c'est une suggestion SGDG :transpi: .

A mon (humble) avis, c'est plus simple d'utiliser un Daily et de virer les fichiers de plus de x jours avec une tâche schédulée.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour la réponse.

Effectivement j'avais pensé après mes tests a utiliser un Daily et de mettre en place un job de purge des anciens fichiers de logs, mais vu que log4j semble quand même assez complet je me demandais si j'etais pas passé a coté de quelque chose, s'il y avait des options non/mal documentées ou s'il y avait un autre appender caché dans un coin.

Et le coup du rollOver() me semble pas vraiment évident a mettre en place, et si je peux me limiter a modifier le fichier de properties de log4j (et peut être créer un job de purge), ca me semble préférable :francais:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...