est-il possible de configurer log4j pour créer des fichiers journaux gzipés sans créer des fichiers intermédiaires ?Log? Il existe plusieurs stratégies de roulement (roulement par date, etc.), mais ils créent d'abord des fichiers décompressés. P>
3 Réponses :
Vous pouvez essayer org.apache.log4j.rolling.timebasedrollingpolicy:
Vous pouvez créer votre propre appendier extension org.apache.log4j.rollingfileAppender et dérober
la logique actuelle en mettant en œuvre votre propre version de mise en œuvre optimisée. Fichier Current Zip et jetez-le en le roulant sur un autre fichier journal (mise en œuvre par défaut de RollingFileAppender). Exemple: Vous pouvez "google" et rechercher des exemples d'implémentation à l'aide de java.Util.zip.zipOutputStream ou de java.util.zip.gzipOutputStream pour zip le fichier actuel. P> p>
Il est possible de résoudre cette tâche à l'aide de cet écrivain: http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/http11/filters/flushableGzipOutpTream.html
et un code comme Ça fonctionne, mais il y a quelques inconvénients: la compression est inférieure et il n'est pas toujours possible de décompresser ce fichier. Donc, je suis retourné à la rotation. P> p>
log4J génère des journaux conformément à votre période de roulement.Je ne pense pas y avoir une sorte de stratégie de vos besoins. Vous l'avez fait manuellement
Vous voudrez avoir au moins le journal actuel, même si vous avez créé votre propre appendeur, il serait coûteux d'écrire directement sur le fichier zippé. Vous devriez garder la mémoire de connexion (risquée dans le cas d'une halte JVM), puis écrivez le fichier zip. Pourquoi voudriez-vous cela?