Überlegungen zum Logging

Logging (z.B. in eine .log-Datei oder in eine SQL-Datenbank) ist eine große Hilfe sowohl während der Entwicklungszeit als auch später zur Fehlersuche beim Kunden.

Logger erlauben das selektive Ein- und Ausschalten bestimmter oder aller Log-Meldungen zur Laufzeit über eine einfache textbasierte Steuerdatei.

Bewährt haben sich folgende Vorschläge:

  • Verlassen Sie sich nicht auf das sehr rudimentäre und nur für bestimmte Exceptions durchgeführte Logging des Application Servers (normalerweise nur für unchecked RuntimeExceptions, die bis zum EJB-Container gelangen).
  • Verwenden Sie kein Logging per ‚System.out.println(„…“);‘, die Konsole ist nicht immer sichtbar und solche Ausgaben sind nicht zur Laufzeit konfigurierbar.
  • Verwendung von Log4j.
  • Alle unerwarteten Exceptions sollten zu einem Logging-Eintrag führen.
  • Zusätzlich können Auslastungs- und Performancekennzahlen sinnvoll sein.
  • Umlaute (ä, ö, ü) und deutsche Sonderzeichen (ß, §, €) sollten vermieden werden.
  • Falls Ausgabe in Datei: Jede Meldung produziert genau eine Zeile, damit ‚grep‘ verwendet werden kann (Ausnahme: StackTrace).
  • Wichtig ist eine einheitliche Struktur der Logging-Meldungen, damit sie mit Tools ausgewertet werden können.
  • Definition stets zu verwendender ‚Rubriken‘: Bei Ausgabe in SQL-Datenbank entsprechen die Rubriken den Tabellenspalten, bei Ausgabe in Datei werden Rubriken durch Semikolons getrennt (.csv-Datei, kann direkt z.B. in Excel bearbeitet werden).
  • Die Rubriken können zum Beispiel sein (in Application-Server-Umgebung): Zeitstempel; Anwendungsname; Thread-Name; Log-Level; Exception-ID; Fehlercode; Meldetext.
  • Der Zeitstempel (Timestamp) formatiert nach ISO 8601 (EN 28601, DIN 5008), also beginnend mit dem Jahr (z.B. ‚yyyy-MM-dd HH:mm:ss.SSS‘), damit einheitlich mit Tools ausgewertet werden kann und damit nach Datum sortiert werden kann.
  • Damit in mehrschichtigen Multithreading-Umgebungen zusammengehörende Exceptions identifiziert werden können, kann eine ‚Exception-ID‘ (automatisch) generiert werden. Auch sollte doppeltes Logging vermieden werden. Siehe hierzu: ‚http://www-128.ibm.com/developerworks/java/library/j-ejbexcept.html‘.
  • Fehler, die möglicherweise zum Beispiel vom System-Operator bearbeitet werden müssen, sollten eindeutige Fehlercode-Nummern erhalten, zu denen in einer Dokumentation das weitere Vorgehen beschrieben ist.
  • Falls Fehlermeldungen oder Logging-Meldungen mehrsprachig sein sollen, verwenden Sie statt der Meldetexte Fehlernummern, die dann über .properties-ResourceBundles aufgelöst werden.

via Exception Handling und Logging.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.