Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Loggen am Beispiel von log4j ETIS 2005. ETIS 2005 Nadine FröhlichLog4J2 Gliederung Motivation Logging Hauptbestandteile –Logger –Appender –Layout Konfiguration.

Ähnliche Präsentationen


Präsentation zum Thema: "Loggen am Beispiel von log4j ETIS 2005. ETIS 2005 Nadine FröhlichLog4J2 Gliederung Motivation Logging Hauptbestandteile –Logger –Appender –Layout Konfiguration."—  Präsentation transkript:

1 Loggen am Beispiel von log4j ETIS 2005

2 ETIS 2005 Nadine FröhlichLog4J2 Gliederung Motivation Logging Hauptbestandteile –Logger –Appender –Layout Konfiguration Log4j vs. Sun‘ s Logging API Zusammenfassung

3 ETIS 2005 Nadine FröhlichLog4J3 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

4 ETIS 2005 Nadine FröhlichLog4J4 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)

5 ETIS 2005 Nadine FröhlichLog4J5 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

6 ETIS 2005 Nadine FröhlichLog4J6 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

7 ETIS 2005 Nadine FröhlichLog4J7 Hauptbestandteile Logger (Wird geloggt?) Appender (Wohin?) Layouts (Format?)

8 ETIS 2005 Nadine FröhlichLog4J8 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

9 ETIS 2005 Nadine FröhlichLog4J9 Vordefinierte Log-Level ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF Normale Log-Level DEBUGfeingranulare Informationsereignisse, zum Debuggen INFOinformierende Nachrichten, groben Ablauf aufzeigen WARNpotentiell nachteilige Situationen ERRORFehler, Anwendung läuft evtl. weiter FATALernster Fehler, meist Abbruch der Anwendung Spezielle Log-Level ALLniedrigste Priorität, Loggen anschalten OFFhöchste Priorität, Loggen abschalten

10 ETIS 2005 Nadine FröhlichLog4J10 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

11 ETIS 2005 Nadine FröhlichLog4J11 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

12 ETIS 2005 Nadine FröhlichLog4J12 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()); }

13 ETIS 2005 Nadine FröhlichLog4J13 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

14 ETIS 2005 Nadine FröhlichLog4J14 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

15 ETIS 2005 Nadine FröhlichLog4J15 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

16 ETIS 2005 Nadine FröhlichLog4J16 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

17 ETIS 2005 Nadine FröhlichLog4J17 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

18 ETIS 2005 Nadine FröhlichLog4J18 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

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


Herunterladen ppt "Loggen am Beispiel von log4j ETIS 2005. ETIS 2005 Nadine FröhlichLog4J2 Gliederung Motivation Logging Hauptbestandteile –Logger –Appender –Layout Konfiguration."

Ähnliche Präsentationen


Google-Anzeigen