Wie Log4J - Ausgaben/Events auffangen?!

Otz

Bekanntes Mitglied
Hallo zusammen,

ich bin gerade dabei eine kleine Anwendung zu schreiben mit der es möglich ist, Log4J Log-Ausgaben ein bischen anschaulicher zu gestalten. z.B Syntax Highlighting, Code-Reduce usw.

Ich bin mir nur noch nicht ganz sicher, wie ich der Anwendung die Log-Ausgaben zukommen lassen soll und deshalb habe ich gedacht ich frag einfach mal euch.

Idee 1:
Die Anwendung bekommt den Pfad zur Log-Datei und schaut regelmäßig ob sich z.B. die Größe geändert hat und lädt dann den Inhalt nach.

Idee 2:
Ist es evntl. möglich über einen Appender/Handler direkt an die Ausgegeben Log-Nachrichten zu kommen?

Gibt es noch weitere Möglichkeiten? Ich bin für jede Idee dankbar.


Grüße
 
In Bezug auf deine erste Idee kann ich empfehlen mal nach den WatchService zu schauen (seit Java 7).

Code:
WatchService watcher = FileSystems.getDefault().newWatchService();

Paths.get( "Dein Ordner für die Log Files" ).register( watcher, StandardWatchEventKinds.ENTRY_CREATE,
                                      StandardWatchEventKinds.ENTRY_DELETE,
                                      StandardWatchEventKinds.ENTRY_MODIFY );

Dies vermeidet ständiges scannen der Dateien/Ordner.
 
Ich habe doch noch ein Problem zu diesem Thema festgestellt.

Und zwar habe ich ein File in welches ich mit einem FileAppender Log-Nachrichten schreibe. Dieses File überwache ich mit einem Watch Service auf Änderungen.

Leider erkennt der Service nicht sofort das etwas in der Datei geändert wurde sondern erst, wenn ich diese geöffnet habe oder ich die Ansicht aktualisiere.

Ist das normal oder habe ich noch etwas falsch implementiert?!


log4j.properties, welche die daten in die datei schreibt
Code:
#File-Appender
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=log/MyTempLogFile.log
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.FILE.layout.conversionPattern=%m%n


Ist es eigentlich sinnvoll, den watcher service in einem seperatem thread laufen zu lassen?!
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben