Loggen mit log4j ETIS 2004.

Slides:



Advertisements
Ähnliche Präsentationen
PHP Extension und Application Repository
Advertisements

E-Commerce Shop System
der Universität Oldenburg
der Universität Oldenburg
Lösungsansätze zur automatischen Portierung von Internet-Inhalten für das interaktive Fernsehen Konzeption und Implementierung einer XHTML- Schnittstelle.
Kapselung , toString , equals , Java API
Basis-Architekturen für Web-Anwendungen
Objektorientierte Programmierung
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Motivation Log4J (I) Fehlersuche gehört zum Geschäft jeden Ent-wicklers ebenfalls sehr wichtig: Informationen über den Zustand des Programms oder wichtige.
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
XDoclet ETIS SS05.
DFKIUtils FRODO AgentFramework ein kleiner Einblick FRODOianer-Sitzung am
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung MySQL mit PHP
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Wizards & Builders GmbH Die Benutzeroberfläche Interaktives Arbeiten mit den Werkzeugen/Assistenten von Microsoft Visual FoxPro.
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Debugging, Logging, Monitoring, Tools
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
.Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Aufzeichnung von Usability-Daten im www. Client-Side Log : automatisch (maschinell) generiertes Protokoll Client : Rechner mit dem Browser des Users Server:
Enhydra Shark Workflow-Management Frank Aurich Markus Reisch.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
1 Einführung TOMCAT Entwicklung Technischer Informationssysteme SS 2003 Florian Müller.
Korrektheit von Programmen – Testen
Benutzerdefinierte Tags
Stefan Metzlaff1 Cocoon Stefan Metzlaff
Loggen am Beispiel von log4j
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Objektorientierte (OO) Programmierung
Workflowsysteme und Datenbanksysteme Gliederung Motivation Basis- funktionalitäten Klassifikations- merkmale Referenz-Modell MQ Workflow Zusammenfassung.
Umstellung von Team4-Komponenten auf den Standard- Protokoll-Mechanismus von Microsoft SQL Server 2012 Johann Jansen y Alegret Team4 GmbH Seminarvortrag.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Das IT - Informationssystem
Hello World! Javakurs 2013 Arne Kappen
 Präsentation transkript:

Loggen mit log4j ETIS 2004

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

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) 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) 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 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 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 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

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) 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 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 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 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 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 #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 Ä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 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 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