14.5 | Protokollierung (Logging) |
SeitVersion 1.4 enthält das J2SDK ein Framework, das Funktionen zur integrierten Protokollierung bereitstellt. Es kann zu folgenden Zwecken eingesetzt werden:
Wichtig für das Design des Logging-Frameworks war der einfache Zugriff aus verschiedenen Programmmodulen sowie die Verfügbarkeit verschiedener Konfigurationsmöglichkeiten unter Berücksichtigung der Sicherheitseinschränkungen von Java-Anwendungen. Durch eine Pipeline-Architektur wird eine flexible Verarbeitung mit Filterung und anschließend angekoppelter Formatierung gewährleistet.
- Zur Speicherung anwendungsorientierter Ereignisse (Anwendungsprotokoll). Das Anmelden eines Nutzers oder der Verbindungsaufbau zu einem entfernten Rechner sind beispielhafte Protokolleinträge dieser Kategorie. Anwendungsorientierte Ereignisse werden in der Regel von Anwendern oder Systemadministratoren analysiert bzw. ausgewertet.
- Zur Fehlersuche (Debugging-Protokoll). Hierzu werden Laufzeitinformationen des Programms in das Protokoll geschrieben (z. B. Zustand von Variablen während der Ausführung). Diese Informationen sind in der Regel nur für die Entwickler und nicht für die Anwender bestimmt.
Jeder Protokolleintrag (Log-Record), der über das Logging-Framework erzeugt wird, enthält im Wesentlichen folgende Informationen:Das Logging-Framework beinhaltet sieben vordefinierte Ebenen, die die Granularität der Protokolleinträge kategorisieren. Mit Filter kann die Ausgabe von Protokolleinträgen einer bestimmter Ebenen unterdrückt werden. Über die Ebene wird in der Regel auch die Unterscheidung zwischen Anwendungsprotokoll und Debugging-Protokoll gemacht.
- Die Ebene, welche die Granularität des Protokolleintrags definiert (von schwerwiegend bis ganz fein).
- Eine benutzerdefinierte Nachricht, die den Inhalt des Protokolleintrags darstellt.
- Der Zeitpunkt, zu dem der Protokolleintrag erzeugt wurde.
- Parameter, die Zusatzinformationen enthalten.
- Name von Klasse und Methode, in der der Eintrag erzeugt wurde.
Im einfachsten Fall muss man beim Erzeugen eines Protokolleintrags nur Ebene und Nachricht übergeben. Alle weiteren Angaben sind optional und können durch das Logging-Framework automatisch bestimmt werden.
Alle für die Protokollierung relevanten Klassen sind im Paket java.util.logging enthalten.
An einem einfachen Beispiel wird zunächst die grundlegende Arbeitsweise mit dem Logging-Framework erläutert, bevor auf weitere Details eingegangen wird.