Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Loggen am Beispiel von log4j

Ähnliche Präsentationen


Präsentation zum Thema: "Loggen am Beispiel von log4j"—  Präsentation transkript:

1 Loggen am Beispiel von log4j
ETIS 2005

2 Gliederung Motivation Logging Hauptbestandteile Logger Appender Layout
Konfiguration Log4j vs. Sun‘ s Logging API Zusammenfassung Log4J

3 Motivation - Aufgaben Logging
Low level debug-Methode Innere Abläufe der Anwendung (über Ausgaben) verfolgen Information über Zustand des Programms Programm läuft Programm fehlerhaft Information über wichtige Ereignisse welche Methoden, in welcher Reihenfolge aufgerufen Probleme aufgetreten Suche logischer Fehler Kontrolle von Variablenwerten Log4J

4 Motivation - Alternativen Logging
Debugger: umfangreiche Konfigurations- und Kontrollmöglichkeiten nicht immer verfügbar (verteilte Anwendungen) Loggen oft schneller Debugging transient - Logging persistent System.out.print(...) steht immer zur Verfügung, leicht anzuwenden Übersichtlichkeitsprobleme nur Standardausgabe Ausgaben nicht zur Laufzeit konfigurierbar und nicht einfach abschaltbar (nur löschbar oder extra Konstrukte programmieren) Log4J

5 Motivation - Log4j I Selber Programmieren einer Logging API belastet eigentliches Projekt zusätzlich Loggen in vielen Projekten benötigt (in Entwicklung + produktiver Umgebung) vorhandene Logging-API nutzen, z.B. de facto Standard log4j, um Log-Statements zu nutzen entstand aus Logging-API des EU-Projektes Semper Apache Jakarta Projekt, Open Source einsetzbar ab JDK 1.1 einfacher Einstieg in API bei sehr komplexen Möglichkeiten Log4J

6 Motivation Log4j II Evtl. Probleme beim Loggen: Anwendung verlangsamt
Informationen schwer finden Ziele Log4J: Wenig Performanceverluste durch Logging klassifizierbare Informationen (z.B. Ausschalten bestimmter Loginformationen) Anwendung zur Laufzeit konfigurierbar Loginformationen zur Laufzeit an- und ausschaltbar frei definierbare Ausgabeformate/-orte der Log-Meldungen Log4J

7 Hauptbestandteile Logger (Wird geloggt?) Appender (Wohin?)
Layouts (Format?) Log4J

8 Klasse Logger Kernkomponente Klassenname als Loggername ist Konvention
Bereitstellung als statische Variable in Anwendung private static Logger logger = Logger.getLogger(“test.Sample“); Besitzt Methoden, um Meldungen (auf verschiedenen Stufen) wie: logger.debug(“irgendwas“); logger.info (“irgendwas“); auszugeben vordefinierte Level erweiterbar Log4J

9 Vordefinierte Log-Level
Normale Log-Level DEBUG feingranulare Informationsereignisse, zum Debuggen INFO informierende Nachrichten, groben Ablauf aufzeigen WARN potentiell nachteilige Situationen ERROR Fehler, Anwendung läuft evtl. weiter FATAL ernster Fehler, meist Abbruch der Anwendung Spezielle Log-Level ALL niedrigste Priorität, Loggen anschalten OFF höchste Priorität, Loggen abschalten ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF Log4J

10 Log-Level I Logger haben bestimmtes Level
z.B. Logger hat Level WARN (z.B. in Konfigurationsdatei festgelegt) Log-Methoden haben bestimmtes Level z.B. c.info(...): Log-Meldung auf Level INFO Level des Loggers entscheidet, ob Log-Meldung geschrieben wird Schreiben, wenn Level der Log-Methode höher oder gleich dem Level seines Loggers z.B. Logger hat Level WARN + Methode ist c.info(), da INFO < WARN: c.info ignoriert Log4J

11 Log-Level II Logger bilden durch “.“ getrennte hierarchische Baum-Struktur z.B. java.sql.Connection Ein Root-Logger weitere Logger ein Vorfahr und evtl. mehrere Nachfahren java Vorfahr von java.sql Level der Logger vererbbar, wenn nicht explizit gesetzt z.B. java: INFO, sql: keine Zuweisung  sql = INFO z.B. java: INFO, sql: WARN  sql = WARN Wenn Klassenname = Loggername  Logging für einzelne Klasse oder packages ein- und ausschaltbar Log4J

12 Logging - Performance Log-Statements bleiben i.d.R. im Code
Versteckte Kosten für Parameterkonstruktion logger.debug(“irgendwas“); if-Statement als Performance-Wrapper if (logger.isDebugEnabled() == true){ logger.debug(“irgendwas“ + ichBinTeuer()); } Log4J

13 Appender jedem Logger sind ein oder mehrere Appender zuordenbar
Appender in Loggerhierarchie vererbt Appender legt fest, wohin geloggt wird z.B. Console, File, JDBC, SMTP... (können um eigene erweitert werden) Vererbungskonzept Appender: Kinder des Loggers erben automatisch alle Appender des Vaters z.B. Vater hat Konsole-Appender, Kind hat File-Appender  Kind schreibt auf Konsole und in File Logger-Attribut additivity = false unterbindet Vererbung Log4J

14 Layout Appender wird bei Konfiguration Layout-Pattern übergeben
beschreibt, wie Ausgabe aussieht optische Aufbesserung verbesserte Fehlersuche Z.B. PatternLayout, HTMLLayout, XMLLayout (können um eigene erweitert werden) Pattern-Layout am flexibelsten, C printf-Funktion nachempfunden Log4J

15 Konfiguration Ziel: Logging-Verhalten zur Laufzeit konfigurieren
in Konfigurationsdatei Verhalten einstellen für Anbindung an Konfigurationsdatei sorgen durch einmaligen Aufruf von configure() BasicConfigurator ohne Konfigurationsdatei, belegt System mit sinnvollen Startwerten PropertyConfigurator bezieht Daten aus Properties-Datei DOMConfigurator ähnlich P. Dateiformat XML Log4J

16 Properties-Datei (log4j.properties)
#obersten Logger auf DEBUG setzen, Appender: A1 log4j.rootLogger = DEBUG, A1 #A1 ist ConsoleAppender  Ausgabe auf Console log4j.appender.A1 = org.apache.log4j.ConsoleAppender #A1 verwendet ein Pattern Layout log4j.appender.A1.layout = org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern = [%d / %p / %c ] - %m%n%n Log4J

17 Log4J vs. Sun‘s Log API Ähnlichkeiten in Namensgebung (Klassen: Logger, Level) Konzept hierarchischer Logger ähnlich Log4J viele Appender, Sun 3 Handler Log4J Konfiguration in XML + Properties-Datei, Sun nur Properties-Datei Log4J ab JDK 1.1, Sun erst ab 1.4 Log4J gereift und robust, performanter, umfangreicher Log4J Portierungen für PHP, C/C++, Python, .NET Log4J

18 Zusammenfassung open source
gute Performance, Funktionalität, Handhabung gute Integrierbarkeit in eigene Anwendungen umfangreiche Erweiterungsmöglichkeiten in existierenden Systemen verwendet (JBoss) GUI-basierte Tools vorhanden (Chainsaw, LogFactor5) momentan besser als Sun‘ s Logging API, Wechsel allerdings recht unproblematisch Log4J

19 Quellen Wille, S., Go To Java Server Pages, Addison-Wesley, München, 2001 Evertz, M.: Logger Dir Einen, Javamagazin, 11/2002, S.23 Eickstädt, D., Reuhl, T., Java mit Open Source-Tools, Markt+Technik, München, 2003 Log4J


Herunterladen ppt "Loggen am Beispiel von log4j"

Ähnliche Präsentationen


Google-Anzeigen