Loggen am Beispiel von log4j

Slides:



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

E-Commerce Shop System
der Universität Oldenburg
Kapselung , toString , equals , Java API
VR Framework mit Gestenerkennung
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: Dynamische Datentypen
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.
DOM (Document Object Model)
MyCoRe My Content Repository. Entstehung Seinen Ursprung hat MyCoRe in der MILESS- Software der Universität Essen (Dokumentenserversoftware). Benutzer.
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.
XDoclet 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.
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.
Einführung in Visual C++
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.
XML – Grundlagen und Anwendungen Teil 6: Verarbeitung von XML-Dokumenten: XSLT Prof. Dr. Michael Löwe, FHDW Hannover.
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.
Entwicklung verteilter eingebetteter Systeme - Einführung
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.
Präsentation von Sonja Pathe
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
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.
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
CGI (Common Gateway Interface)
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
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.
Benutzerdefinierte Tags
Stefan Metzlaff1 Cocoon Stefan Metzlaff
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.
Software - Testung ETIS SS05.
Loggen mit log4j ETIS 2004.
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Objektorientierte (OO) Programmierung
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
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 am Beispiel von log4j ETIS 2005

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

Motivation - Aufgaben Logging Low level debug-Methode Innere Abläufe der Anwendung (über Ausgaben) verfolgen Information über Zustand des Programms Programm läuft Programm fehlerhaft Information über wichtige Ereignisse welche Methoden, in welcher Reihenfolge aufgerufen Probleme aufgetreten Suche logischer Fehler Kontrolle von Variablenwerten Log4J

Motivation - Alternativen Logging Debugger: umfangreiche Konfigurations- und Kontrollmöglichkeiten nicht immer verfügbar (verteilte Anwendungen) Loggen oft schneller Debugging transient - Logging persistent System.out.print(...) steht immer zur Verfügung, leicht anzuwenden Übersichtlichkeitsprobleme nur Standardausgabe Ausgaben nicht zur Laufzeit konfigurierbar und nicht einfach abschaltbar (nur löschbar oder extra Konstrukte programmieren) Log4J

Motivation - Log4j I Selber Programmieren einer Logging API belastet eigentliches Projekt zusätzlich Loggen in vielen Projekten benötigt (in Entwicklung + produktiver Umgebung) vorhandene Logging-API nutzen, z.B. de facto Standard log4j, um Log-Statements zu nutzen entstand aus Logging-API des EU-Projektes Semper Apache Jakarta Projekt, Open Source einsetzbar ab JDK 1.1 einfacher Einstieg in API bei sehr komplexen Möglichkeiten Log4J

Motivation Log4j II 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 zur Laufzeit an- und ausschaltbar frei definierbare Ausgabeformate/-orte der Log-Meldungen Log4J

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) wie: logger.debug(“irgendwas“); logger.info (“irgendwas“); auszugeben vordefinierte Level erweiterbar 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 z.B. Logger hat Level WARN + Methode ist c.info(), da 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 von java.sql Level der Logger vererbbar, wenn nicht explizit gesetzt z.B. java: INFO, sql: keine Zuweisung  sql = INFO z.B. java: INFO, sql: WARN  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 beschreibt, wie Ausgabe aussieht 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 (log4j.properties) #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 Log4J Portierungen für PHP, 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