web-dev-qa-db-fra.com

Compressez les fichiers Log4j

Est-il possible de compresser les fichiers journaux (je le fais via RollingFileAppender)?

36
EK.

extras log4j prend en charge cela:

ajoutez simplement ce qui suit à votre configuration RollingFileAppender et le nom de fichier se termine par . gz compressera automatiquement vos fichiers journaux:

<appender...>
    <rollingPolicy class="org.Apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/>
    </rollingPolicy>
</appender>

vérifiez ici pour plus de détails dans le javadoc:

http://logging.Apache.org/log4j/companions/extras/apidocs/org/Apache/log4j/rolling/TimeBasedRollingPolicy.html

espérons que cela a aidé

42
fasseg

Je suis tombé sur cette excellente réponse, mais j'ai continué à enquêter un peu et log4j 2 est sorti!

Maintenant, vous pouvez avoir la compression avec la bibliothèque de base et bien plus encore ... c'est tout simplement génial!

RollingFileAppender - Je cherchais quelque chose qui avait un roulement à la fois TimeBased et sizeBased, et avec la compression ... il a les deux! et je peux déposer ma bibliothèque syslog4j puisque celle-ci l'a aussi!

Veuillez ne pas utiliser log4j 1.2 + extras sauf si vous en avez vraiment besoin.

16
Daren

Je sais que cela ne répond pas exactement à votre question, mais cela propose une autre solution.

La façon dont nous traitons cela consiste à exécuter un traitement par lots à la fin de la journée qui compresse tous les fichiers journaux antérieurs à la date d'aujourd'hui, se débarrasse de tous les fichiers antérieurs à une semaine, puis les copie sur un autre serveur de fichiers. De cette façon, l'application n'a pas besoin de consommer de cycles CPU pour ce faire et sur le serveur, nous avons des journaux qui ne datent pas d'une semaine et sur un autre serveur de fichiers, nous avons des fichiers journaux plus anciens.

3
Romain Hippeau

La seule autre chose que je vois est de mettre à niveau log4j vers plus de 1.3.15/1.4 et d'utiliser le rouleau TimeBasedRollingPolicy pour activer la compression automatique, mais cela nécessiterait une mise à niveau de log4j essentiellement (et la compatibilité de l'application également)

Hmmm..peut être une autre meilleure chose à faire est de laisser log4j exécuter une commande une fois le fichier roulé. Donc, au lieu de gzip, je peux utiliser une autre logique de compression comme bzip, ou lzop etc. Ce serait une autre approche si j'ai cette fonctionnalité dans log4j aujourd'hui.

1
Nikhil Mulley