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

Slides:



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

Blue J.
der Universität Oldenburg
Druck / Ausgaben unter LSF
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Datenbankzugriff im WWW (Kommerzielle Systeme)
eXist Open Source Native XML Database
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Polymorphie (Vielgestaltigkeit)
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Reflection API ETIS SS04.
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.
Reflection API ETIS SS05.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Treffen mit Siemens Siemens: Werner Ahrens Volkmar Morisse Projektgruppe: Ludger Lecke Christian Platta Florian Pepping Themen:
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
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.
1 WS 2012 Software-Engineering II Aspektorientierung.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
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.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Jetzt lernen wir.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Debugging, Logging, Monitoring, Tools
Automatisierte Benutzerverwaltung
08. September 2010Entwicklungsstrategien in Liferay 1 Christian Krause, URZ FSU Jena, IDM-Arbeitsgruppe.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Teil II Objekte ergeben ein Ganzes
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
SQL Server 2005 CLR-Integration
Präsentation von Sonja Pathe
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
Java Server Pages Sergej Keterling
EPROG Tutorium #4 Philipp Effenberger
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Kapitel 2: Image J Software für digitale Bilder
1 Einführung TOMCAT Entwicklung Technischer Informationssysteme SS 2003 Florian Müller.
Benutzerdefinierte Tags
Loggen am Beispiel von log4j
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Seminar Modellgetriebene Softwareentwicklung XMI - XML Metadata Interchange Vortrag im Rahmen des Seminar Modellgetriebene Softwareentwicklung Mirko Otto.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Loggen mit log4j ETIS 2004.
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
Das IT - Informationssystem
 Präsentation transkript:

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 Log4J

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

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 Log4J

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“); Log4J

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 Log4J

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 Log4J

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 Log4J

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 Log4J

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 Log4J

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 Log4J

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 Log4J

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

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 Log4J

Log4J vs. JSR47 (Sun‘s 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 Log4J

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 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/ Log4J