Logging Flashcards
Erklären können, wozu Logging dient
Logging in Java dient dazu, Informationen über den Ablauf eines Programms zu protokollieren. Es ermöglicht das Aufzeichnen von Fehlermeldungen, Warnungen und anderen relevanten Ereignissen, um bei der Fehlerbehebung und der Überwachung des Programms zu helfen.
Erklären können, wie Logging abläuft und wie entschieden wird,
welches gemeldete Ereignis wohin protokolliert wird
Logging in Java erfolgt mithilfe von Loggern, die in der java.util.logging-Klasse enthalten sind. Bevor ein Ereignis protokolliert wird, wird überprüft, ob das Ereignis das aktuelle Protokollierungslevel erfüllt. Jeder Logger hat ein bestimmtes Level, z.B. INFO, WARNING oder SEVERE. Je nachdem, welches Level das Ereignis hat, wird es in das entsprechende Protokoll weitergeleitet, z.B. in eine Datei, die Konsole oder ein externes System. Dieses Verhalten kann durch Konfigurationen angepasst werden.
Logging von Ereignissen nach Schwere gewichtet
Beim Logging von Ereignissen nach Schwere werden die Ereignisse basierend auf ihrer Wichtigkeit oder Schwere priorisiert. Dies ermöglicht es, die Protokolle nach verschiedenen Kategorien zu filtern und zu analysieren. Zum Beispiel können Fehlerereignisse mit hoher Schwere in ein spezielles Fehlerprotokoll geschrieben werden, während Warnungen und Informationen in separate Protokolle geschrieben werden. Dies ermöglicht eine bessere Organisation und Analyse der Ereignisse.
Nachteile primitive Logging mit System.err.println()
- Jede Logging-Anweisung hat ein eigenes Format
- Die Granularität ist unflexibel
- Das Logging in mehrere Ausgaben (XML Datei, Textdatei, Datenbank,
…) ist schwierig
Welches Packet unterstützt das strukturierte Logging
java.util.Logging
Logging ablauf
- Anwendungen rufen Logger-Objekte auf, um ein Ereignis (und seine
Wichtigkeit) zu protokollieren - Logger-Objekte übergeben LogRecords an Handler
- Logger und Handler unterstützen Levels und Filter, um
relevante Nachrichten zu finden. - (Optionale) Formatter: Lokalisierung und Formatierung
Inwiefern können Handler Nachrichten an andere Handler weiterleiten?
Handler können Nachrichten an andere Handler delegieren
Was ist die Standardvorgehensweise für die Benachrichtigung der übergeordneten Logger durch die Logger?
Standardmäßig benachrichtigen alle Logger die jeweils übergeordneten
Logger.
Für jeden Logger gibt es folgende Eigenschaften:
- 7 Levels (SEVERE bis FINEST), die bestimmen, wann ein Ereignis
geloggt wird. - Handler, die bestimmen, wohin die Ausgabe geht (z.B. StreamHandler, FileHandler)
- Formatter, die bestimmen, wie die Ausgabe aussieht (z.B. XMLFormatter)
Logger haben Namen und sind hierarchisch angeordnet
Vererbung von Eigenschaften innerhalb der Hierarchie
Klasse LogManager
Über den LogManager lassen sich zur Laufzeit Logger-Eigenschaften
über Properties einstellen
* .level stellt den Level ein
* .handler stellt den Handler ein
Filter
- Filterobjekte erlauben eine feinere Steuerung als die Vorgabe von
Levels - Filter können jedes Feld im LogRecord auswerten und die Meldung
ggf. verwerfen.