loggen mit log4j l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Loggen mit log4j PowerPoint Presentation
Download Presentation
Loggen mit log4j

Loading in 2 Seconds...

play fullscreen
1 / 18

Loggen mit log4j - PowerPoint PPT Presentation


  • 161 Views
  • Uploaded on

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:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Loggen mit log4j' - red


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
gliederung
Gliederung
  • Motivation
  • Geschichte
  • Logger
  • Appender
  • Layout
  • Konfiguration
  • Log4j vs. Sun‘ s Logging API
  • Zusammenfassung

Log4J

motivation log4j i
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

motivation log4j ii
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

motivation log4j iii
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

geschichte
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

klasse logger
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

vordefinierte log level
Vordefinierte Log-Level

ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

Log4J

log level i
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

log level ii
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

logging performance
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

appender
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

layout
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

konfiguration
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

properties datei
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

log4j vs sun s log api
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

zusammenfassung
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

quellen
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