Dans log4j, lorsque j'utilise un FileAppender avec les propriétés BufferedIO=true et BufferSize=xxx (c'est-à-dire que la mise en mémoire tampon est activée), je veux pouvoir vider le journal pendant la procédure d'arrêt normale. Avez-vous une idée de la façon de procéder ?
Réponses
Trop de publicités?
Ferran Maylinch
Points
394
La seule solution qui a fonctionné pour moi est d'attendre un certain temps :
private void flushAppender(Appender appender) {
// this flush seems to be useless
((AbstractOutputStreamAppender<?>) appender).getManager().flush();
try {
Thread.sleep(500); // wait for log4j to flush logs
} catch (InterruptedException ignore) {
}
}
rsp
Points
14367
ewramner
Points
3146
J'ai écrit un appender qui corrige ce problème, voir GitHub ou utiliser name.wramner.log4j:FlushAppender dans Maven. Il peut être configuré pour purger les événements de haute gravité et il peut rendre les appenders non purgés lorsqu'il reçoit un message spécifique, par exemple "Shutting down". Consultez les tests unitaires pour des exemples de configuration. Il est gratuit, bien sûr.
- Réponses précédentes
- Plus de réponses