Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Loggen mit log4j ETIS 2004.

Ähnliche Präsentationen


Präsentation zum Thema: "Loggen mit log4j ETIS 2004."—  Präsentation transkript:

1 Loggen mit log4j ETIS 2004

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

3 Motivation Log4J (I) Loggen in vielen Projekten benötigt (in Entwicklung + produktiver Umgebung) Low level debug-Methode Aufgaben: Innere Abläufe der Anwendung verfolgen Informationen über den Zustand des Programms Informationen über wichtige Ereignisse Variablenwerte kontrollieren Fehlersuche Log4J

4 Motivation Log4J (II) System.out.print(...)
Meldungen nicht abschaltbar (nur löschbar), nicht staffelbar nur Standardausgabe Fehlersuche mit Debugger: Problem, wenn nicht verfügbar Debugging transient - Logaufrufe bleiben im Programm Loggen oft schneller Selber programmieren belastet eigentliches Projekt zusätzlich Log4J

5 Motivation Log4j (III) 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 an- und ausschalten frei definierbare Ausgabeformate/-orte der Log-Meldungen Log4J

6 Geschichte Open Source Projekt, um Log-Statements in eine Anwendung zu bringen (de facto Standard) Apaches Jakarta Projekt einsetzbar ab JDK 1.1 Hauptbestandteile: Logger (Wird geloggt?) Appender (Wohin?) Layouts (Format?) Log4J

7 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 auszugeben (Stufen erweiterbar) logger.debug(“irgendwas“); Log4J

8 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

9 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 INFO < WARN  c.info() ignoriert Log4J

10 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 java.sql Level der Logger vererbbar, wenn nicht explizit gesetzt, z.B. java: INFO, java.sql: keine Zuweisung  java.sql = INFO java: INFO, java.sql: WARN  java.sql = WARN Wenn Klassenname = Loggername  Logging für einzelne Klasse oder packages ein- und ausschaltbar Log4J

11 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

12 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

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

14 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

15 Properties-Datei #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

16 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 Portierungen für C/C++, Python, .NET Log4J

17 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

18 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 mit log4j ETIS 2004."

Ähnliche Präsentationen


Google-Anzeigen