2009-03-27 4 views
1

Ich habe eine Webanwendung, die Protokollinformationen in einer Datei mit log4j RollingFileAppender ablegt. Die Anwendung ist derzeit so konfiguriert, dass nur WARN- und höhere Protokollierungsinformationen ausgegeben werden, sodass sich die Datenträger-E/A nicht auf die Leistung auf dem Server auswirken.Wie konfiguriere ich log4j, um Debug-Informationen auszugeben, wenn ein Fehler auftritt?

Allerdings möchte ich die letzten X Debug-Informationen wissen, wenn ein Fehler auftritt. Gibt es eine Möglichkeit, log4j so zu konfigurieren, dass die letzten 25 Zeilen von Debug-Informationen sowie der Fehler in einer Datei ausgegeben werden?

Ich nehme an, dass dies mit einem benutzerdefinierten Appender getan werden kann. Ich habe versucht, nach einem Beispiel zu suchen und konnte keins finden.

Antwort

0

Ich denke, das Schreiben Ihrer eigenen ist der Weg zu gehen. Können Sie Appender implementieren und jeden Aufruf an einen zugrunde liegenden RollingFileAppender delegieren?

In Ihrer Implementierung speichern Sie einfach die neuesten 'n' Log-Nachrichten und schreiben Sie in den Rolling File Appender. Wenn Sie eine Fehlermeldung erhalten, speichern Sie die gespeicherten Debug-Meldungen im Rolling File Appender.

0

Ja, die einzige Möglichkeit, die ich kenne, ist, Ihre eigene Appender zu schreiben. Erweitern Sie entweder RollingFileAppender oder schreiben Sie eine Appender, die an eine RollingFileAppender delegiert. Speichern Sie in Ihrem neuen Appender einen Verlauf der letzten N Protokollierungsereignisse und wenn etwas auf ERROR-Ebene protokolliert wurde, speichern Sie Ihren Verlauf der Protokollierungsereignisse. Ich habe so etwas selbst in die Tat umgesetzt, aber nie abgeschlossen.

Verwandte Themen