Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Log4J1 Motivation Log4J (I) Fehlersuche gehört zum Geschäft jeden Ent- wicklers ebenfalls sehr wichtig: –Informationen über den Zustand des Programms oder.

Ähnliche Präsentationen


Präsentation zum Thema: "Log4J1 Motivation Log4J (I) Fehlersuche gehört zum Geschäft jeden Ent- wicklers ebenfalls sehr wichtig: –Informationen über den Zustand des Programms oder."—  Präsentation transkript:

1 Log4J1 Motivation Log4J (I) Fehlersuche gehört zum Geschäft jeden Ent- wicklers ebenfalls sehr wichtig: –Informationen über den Zustand des Programms oder –wichtige Ereignisse in geregelter Weise an System weiterzugeben Aufgaben Logger: –Variablenwerte kontrollieren –Ablauf einer Anwendung verfolgen

2 Log4J2 Motivation Log4j (II) Fehlersuche mit Debugger erledigt: Problem, wenn nicht verfügbar (JSP) Lösungsversuche oft mit System.out.print(...) besser Log4J, da log-Statements: –ohne Performancekostenerhöhung im Quelltext verbleiben und an Kunden mitgeliefert werden können bei Bedarf aktivierbar –zur Laufzeit der Anwendung level- und logger- weise an- und ausschaltbar –Ausgaben zur Laufzeit konfigurierbar –Ausgaben in unterschiedlichster Weise möglich (Ausgabeort/Ausgabeformat)

3 Log4J3 Das Projekt Open Source Projekt, um Log-Statements in eine Anwendung zu bringen (de facto Standard) aus Apaches Jakarta Projekt einsetzbar ab JDK 1.1 Ziele: –keine (grossen) Performanceverluste durch Loggen –minimaler Konfigurationsaufwand –klassifizierbare Informationen Hauptbestandteile: Logger, Appender, Layouts

4 Log4J4 Klasse Logger (I) Kernkomponente: Klasse Logger (ehemals Category) kann Entwickler als private statische Variable in Anwendung bereitstellen und mit entsprechen- den Methoden nutzen private static Logger logger = Logger.getLogger(test.Sample); logger.debug(irgendwas);

5 Log4J5 Klasse Logger (II) Klassenname als Loggername ist Konvention –so Logging für einzelne Klasse oder package ein- und ausschalten Log-Statements bleiben i.d.R. im Code --> Ge- samtperformance soll sich nicht verschlechtern if (logger.isDebugEnabled() == true){ logger.debug(irgendwas); } if-Statement als Performance-Wrapper

6 Log4J6 Log-Level(I) ALL: niedrigste Priorität, Loggen anschalten DEBUG: feingranulare Informationsereignisse, um Anwendung zu debuggen INFO: informierende Nachrichten, die groben Ablauf einer Anwendung aufzeigen WARN: potentiell nachteilige Situationen ERROR:Fehler, Anwendung läuft evtl. weiter FATAL: ernster Fehler --> meist Abbruch der Anwendung OFF: höchste Priorität, Loggen abschalten aufsteigende Priorität der Level (ehemals Priority) : ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

7 Log4J7 Log-Level (II) Tritt Logfall ein (Logaufruf): Aufruf Printmethoden der Loggerinstanz, also debug(), info()... Printmethode bestimmt Level des Logaufruf –z.B. c.info(...) ist Logaufruf auf Level INFO Loggen ist möglich, wenn Level des Logaufrufes höher oder gleich dem seines Loggers ist –z.B. c.info(...) Logger hat Level WARN c.info() ignoriert

8 Log4J8 Log-Level (III) Logger bilden durch. getrennte hierachische Struktur z.B. java.sql.Connection und besitzen bestimmten Level Level nicht explizit gesetzt von nächst höherem Logger geerbt –z.B. java: INFO, sql: keine Zuweisung sql = INFO Ansonsten: Logger der Klasse explizit gewünschten Level zuweisen –z.B. java: INFO, sql: WARN sql = WARN –alle Kinder von sql erhalten nun Level von sql und nicht von java Connection = WARN

9 Log4J9 Appender (I) log-Statements zur Auswertung an unterschied- liche Ziele verschickbar Appender legt fest, wohin (Datei, Konsole, DB, Auswertung remote) jedem Logger-Objekt sind ein oder mehrere Appender zuordenbar Appender wird bei Konfiguration Layout-Pattern übergeben –optische Aufbesserung –verbesserte Fehlersuche

10 Log4J10 Appender (II) Vererbungskonzept auch hier angewandt Kinder des Loggers erben automatisch alle Appender des Vaters väterliche Appender werden aber nicht ersetzt, wie bei vererbtem Log-Level, sondern ergänzt –z.B. Vater schreibt auf Konsole, Kind hat File- Appender Kind schreibt auf Konsole und in File –Vererbungsmechanismus mit Logger-Attribut additivity = false unterbindbar

11 Log4J11 Konfiguration (I) Ziel: Logging-Verhalten zur Laufzeit konfigurieren –an zentraler Stelle der Anwendung richtiges Startverhalten (Appender/Layout) einstellen –für Anbindung an Konfigurationsdatei sorgen BasicConfigurator –ohne File, belegt System mit sinnvollen Start- werten (Loggen auf Konsole) PropertyConfigurator –bezieht Daten aus Property-Datei DOMConfigurator –ähnlich P. Dateiformat XML

12 Log4J12 Konfiguration (II) Zuweisung von Logging-Eigenschaften (Appender, Layout) vollständig gekapselt einmaliges Aufrufen von configure() erledigt Aufgaben dateibasierte Konfiguratoren benötigen noch zusätzlich URL-spezifischen Parameter –z.B. PropertyConfigurator.configure(c:\\test.lcf)

13 Log4J13 Property-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

14 Log4J14 Log4J vs. JSR47 (Suns Log API) Ähnlichkeiten in Namensgebung (Klassen: Logger, Level) unterschiedlicher Funktionsumfang (100 Klassen Log4J, 16 JSR47) Konzept hierarchischer Logger ähnlich Log4J viele Appender, JSR 3 Handler Log4J ab JDK 1.1, LSR erst ab 1.4 Log4J gereift und robust, performanter Portierungen für C/C++, Pyhton,.NET

15 Log4J15 Zusammenfassung gute Funktionalität (Ausgabeziele, Level) Handhabung (Programmierung, Konfiguration), Integrierbarkeit in eigene Anwendungen gute Erweiterungsmöglichkeiten in existierenden Systemen verwendet (JBoss) GUI-basierte Tools vorhanden (Chainsaw, LogFactor5) momentan besser als JSR47, Wechsel allerdings recht unproblematisch

16 Log4J16 Quellen Wille, S., Go To Java Server Pages, Addison-Wesley, München, 2001 Evertz, M.: Logger Dir Einen, Javamagazin, 11/2002, S.23 magazin.de/Artikel/ausgabe/2002/04/coffee/coffee.html logging-api_01-wc.html


Herunterladen ppt "Log4J1 Motivation Log4J (I) Fehlersuche gehört zum Geschäft jeden Ent- wicklers ebenfalls sehr wichtig: –Informationen über den Zustand des Programms oder."

Ähnliche Präsentationen


Google-Anzeigen