14.5.1 | Beispiel: Protokollierung im Preference-Browser |
Im Folgenden wird der zuvor beschriebene Preference-Browser um eine Logging-Funktionalität erweitet, so dass alle Änderungen auf der Kommandozeile ausgegeben werden. Im ersten Schritt wird hierzu ein globales Logger-Exemplar abgerufen:Logger logger = Logger.getLogger( "de.dpunkt.logging.LoggingPrefBrowser");Über das zurückgelieferte Logger-Exemplar können anschließend konkrete Log-Einträge gemacht werden. Durch den übergebenen Namen wird das Logger-Exemplar identifiziert, die Namen werden global verwaltet. Gibt es bereits ein Logger-Exemplar mit diesem Namen, wird dieser zurückgeliefert. Andernfalls wird beim Aufruf ein neues Logger-Exemplar erzeugt, unter dem übergebenen Namen abgelegt und anschließend zurückgeliefert.
Die Klasse Logger besitzt für jeden Log-Level eine Methode, über die Log-Einträge mit dem entsprechenden Log-Level erzeugt werden können. So wird z. B. die Methode finer() benutzt, um einen Log-Eintrag mit dem Log-Level FINER zu erzeugen. Diese Methode wird auch verwendet, um die Auswahl eines Eintrags im Baum der grafischen Oberfläche zu protokollieren:logger.finer("Node Selected: "+ ((Preferences)node.getUserObject()).absolutePath());Wenn ein neuer Knoten hinzugefügt wird, so wird die Methode info() benutzt, bei deren Aufruf Protokolleinträge mit dem Log-Level INFO erzeugt werden:logger.info("New Node: "+newPrefs.absolutePath());Durch die Verwendung verschiedener Log-Level kann man den Typ der Aktion unterscheiden: Die Navigation im Baum ist nur in der GUI interessant und wird deshalb mit dem Log-Level FINER erzeugt. Änderungen an den Daten hingegen (z. B. Anlegen eines neuen Knotens) werden persistent gespeichert und bekommen deshalb im Beispiel den höheren Log-Level INFO zugewiesen.
Wenn man die globalen Logging-Einstellungen benutzt, sind das im Prinzip alle Code-Elemente, die in die eigene Anwendung eingefügt werden müssen, um die Protokollierung zu unterstützen. In den globalen Einstellungen wird festgelegt, was mit einzelnen Protokolleinträgen gemacht wird. So ist es z. B. möglich, Protokolleinträge einer bestimmten Ebene zu ignorieren, sie auf der Konsole auszugeben, in eine Datei zu schreiben und auf eine bestimmte Art und Weise zu formatieren.