Logging ist ein oft unterschätztes Hilfsmittel bei der
Softwareentwicklung. Je komplexer ein Programm ist, desto
schwieriger ist die Suche nach Ursachen für Probleme. Der Einsatz
eines Debuggers lohnt sich normalerweise erst, wenn die Quelle des
Übels einigermaßen eingegrenzt ist. Mit einem guten Logging
Konzept und der Unterstützung durch Tools zur Filterung und
Auswertung kann man einem Fehler oft so genau auf die Schliche
kommen, dass ein Debugger überflüssig wird.
Bei "herkömmlichem Logging" mittels println , das
bestensfalls noch durch ein DEBUG Flag aus dem
fertigen Programm entfernt werden kann, kommt es schnell zu
Problemen aufgrund der folgenden Mängel:
-
Kein einheitliches Konzept für die Form von Meldungen, so dass
mangels Gewichtung und Zuordnung zur Quelle der Überblick
verloren geht. Bei multithreading Problemen ist damit kein
Blumentopf zu gewinnen.
-
Zu grobe Kontrolle über die Generierung der Meldungen. Sie
lassen sich nur zur Compilezeit geschlossen aktivieren oder
deaktivieren. Bei aktivierten Meldungen wird dann schnell eine
kritische Masse erreicht, wo die Übersicht verloren geht und
sich Performanceeinbußen bemerkbar machen. In der Folge werden
dann Meldungen auskommentiert oder ganz entfernt, die zu einem
späteren Zeitpunkt wieder von Nutzen sein könnten.
-
Keine Unterstützung durch Tools. Wer sich in einem Editor durch
Logfiles in Megabyte Größenordnung kämpfen muß, hat nur geringe
Chancen, das zu finden, was er sucht.
Als Antwort auf diese Probleme bieten die de.qfs.lib.log und
de.qfs.lib.logrmi Packages:
-
Gewichtung der Meldungen in fünf "Wichtigkeitsstufen", von
Fehler über Warnung und Meldung zu
Methodenaufruf und Debugging, die ihrerseits
eine Unterstufe für Details haben.
-
Mit jeder Meldung wird neben der Stufe automatisch die Uhrzeit,
der aktuelle Thread sowie die aufrufende Klasse und Methode
vermerkt.
-
Ein mehrstufiges Filtersystem erlaubt es, die Erzeugung und
Weitergabe von Meldungen sehr fein zu regulieren und damit
sowohl die Performanceverluste zu minimieren, als auch den
Überblick über die Meldungen zu behalten.
-
Mit dem Logserver qflog steht ein freies Tool
zur Verfügung, das auf diesen Fähigkeiten aufbaut. Es übernimmt
sowohl die Darstellung, Sortierung und Filterung der Meldungen,
als auch die Kontrolle über die Meldungsgenerierung zur Laufzeit
eines Programms.
Da das de.qfs.lib.log Package unabhängig von allen anderen Packages der
qflib ist, kann es bei Bedarf in ein eigenes jar
Archiv extrahiert werden, um zum Beispiel den Downloadbedarf von
Applets zu reduzieren. Ausserdem macht es keinen Gebrauch von den
Collection Klassen, so dass das collections.jar
Archiv für JDK 1.1 Applets nicht bereitgestellt werden muss,
solange sie nur das de.qfs.lib.log package verwenden.
|