Wie zu Lesen log4j Ausgabe in eine web-Seite?
Ich habe eine web-Seite, verwendet für admin-Zwecke, die Ausführung einer Aufgabe (Bild-Installation von einem remote-Standort).
Um der Lage sein, um das Debuggen der Vorgang mit dem browser nur, kein ssh, etc, ich möchte in der Lage zu Lesen alle log-Ausgabe von dem ausgeführten thread und spucken es aus, um die web-Seite.
Die Aufgabe läuft darauf hinaus:
- Ändern der log-level für den aktuellen thread an den Anfang des Gesprächs und wiederherstellen, wenn der Aufruf erfolgt ist.
- Lesen alle log-Ausgabe von aktuellen thread und speichert diese in einem string.
Also in pseudocode mein execute () - Methode würde dann so Aussehen: (ich bin mit struts2)
public String execute() throws Exception {
turnLoggingLevelToDebugOnlyForThisThread()
... do stuff...
restoreLoggingLevelForThisThread()
String logs = readAllLogsByThisThread();
}
Kann dies gemacht werden mit log4j?
Ich bin mit tomcat, struts2, log4j und slf4j.
EDIT 1: ich sollte anmerken, dass die motivation, um in der Lage zu sehen, die vorhandenen Protokolle auf einer web-Seite, ohne dass Sie neue log-Zeilen im code. Denken Sie an einen schönen web-debug-Schnittstelle, mit der Sie Ihren Betrieb und das Ergebnis spuckt die Protokolle der Vorgang.
EDIT 2: ich sollte auch beachten, dass ich bereits mit log4j (via slf4j) und eine log4j.xml also die Lösung die ich Suche muss Leben, neben der zurzeit logging-system, nicht ruinieren.
InformationsquelleAutor Ran | 2010-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen eine log4j-appender schreiben einen StringWriter. Hier ist ein Beispiel ich habe vor einiger Zeit:
Es schreibt alle ERROR-logs consoleWriter, aber Sie können den Bereich oder die Ebene der Protokolle, wie Sie wollen. Der Umfang (logger-name) sollte ein eindeutiger Bezeichner des Threads. so etwas wie dieses:
Deinem thread schreiben sollte, um diese logger.
Und wenn Sie möchten, beenden Sie die Protokollierung der thread:
UPDATE:
Hier ist ein funktionierendes Beispiel. Schreibt Fehlerprotokolle in einer Datei (set-in log4j.xml) + schreibt alle thread-Protokolle an einen StringWriter, wenn aktiviert:
Und hier ist meine log4j.xml:
wahrscheinlich ist dein root-logger (ein.k.ein. Kategorie) eingestellt ist, um FEHLER Ebene. Sie müssen überschreiben Sie diese mit einem logger.setLevel () - Befehl, oder durch die Schaffung eines übergeordneten logger-Konfiguration in log4j.xml mit einer unteren Protokoll-level. Blick auf "Logger-Hierarchie" in der Log4J manual. Ich aktualisiert meine Antwort mit einem Beispiel arbeiten, mit log4j.xml. Ich hoffe, es hilft.
Danke, ich habe diese Arbeit mit sjf4j auch jetzt, cool
InformationsquelleAutor Miklos Csuka