1 / 18

Loggen mit log4j

Loggen mit log4j. ETIS 2004. Gliederung. Motivation Geschichte Logger Appender Layout Konfiguration Log4j vs. Sun‘ s Logging API Zusammenfassung. Motivation Log4J (I). Loggen in vielen Projekten benötigt (in Entwicklung + produktiver Umgebung) Low level debug-Methode Aufgaben:

red
Download Presentation

Loggen mit log4j

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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 • http://jakarta.apache.org/log4j/docs/documentation.html • http://www.linux-magazin.de/Artikel/ausgabe/2002/04/coffee/coffee.html • http://www.zdnet.de/builder/artikel/program/200208/java-logging-api_01-wc.html • http://www.jguru.com/faq/Log4j/ • http://www.jsp-develop.de/knowledgebase/print/736/ • Eickstädt, D., Reuhl, T., Java mit Open Source-Tools, Markt+Technik, München, 2003 Log4J

More Related