Log4j Peter Feist Mario Dietrich Motivation: Warum Loggen? • Logging bremst eine Anwendung • Wir machen keine Fehler ... • Ausgabe von Detailinformationen schreckt ab • ABER: Logfile lesen schneller als Debugging Log4j • Quelle: http://logging.apache.org/log4j • Open Source • Logging Komponenten, auf Geschwindigkeit ausgelegt • Komfortabel im Handling • Konfiguration zur Laufzeit Bausteine • Logger • Appender • Layout Logger • Logger übernehmen die Ausgabe • Logger haben 1..n Appender • Logger können Eigenschaften erben • Logger können z.B. pro Klasse definiert werden Methoden • Creation & retrieval – getRootLogger(); – getLogger(String name); • Output – – – – – – debug(Object message); info(Object message); warn(Object message); error(Object message); fatal(Object message); log(Level l, Object message); Loglevel • Logger KANN ein Level zugewiesen bekommen • Erbt andernfalls vom nächsten Vorfahren • Logging, wenn Lvl(msg) >= Lvl(Logger) Level für Logger • • • • • DEBUG INFO WARN ERROR FATAL Appender • • • • File Appender Rolling File Appender -> Sicherung Socket Appender Special Appenders – NTEventLogAppender – JDBC Appender – SMTP Appender Konfiguration • • • • Properties – File Einfach, schnell, übersichtlich Code muss nicht angepasst werden ConfigureAnd Watch() Wir haben doch keine Zeit • Erst testen, ob Logging angeschaltet ist • Dann komplexe Logstatements ausgeben Layout 1 (Schalter) • %d{ISO8601} -> YYYY-mm-dd HH:mm:ss,SSS • %C Classname des Loggers • %l location • %n Zeilenende • %p priority (debug, warn ...) Layout 2 (Format) • • • • %20c -> 20 Zeichen rechtsbündig %-20c -> 20 Zeichen linksbündig %.30c -> letzte 30 Zeichen %20.30c -> Links bis auf 20 Zeichen auffüllen aber max. die letzten 30 Zeichen anzeigen Layouts • Details: http://logging.apache.org/log4j/docs /api/org/apache/log4j/PatternLayout .html • http://www.allapplabs.com/log4j/log 4j_appenders.htm Vorbereitung • Eclipse – workspace anlegen • Neues Javaprojekt • Einstellungen für Log4j.jar Javaklasse anlegen • Klasse anlegen • Interface anlegen • Class-Files für PB bereit stellen PowerBuilder – Vorbereitung • • • • Neue Applikation PBL für Proxies anlegen Projekt EJB Client Wizard Class - Files der Javaklassen kopieren PowerBuilder – Vorbereitung • Proxies erzeugen • pbejbclientXX.pbd einbinden (90 für PB9) Jetzt geht‘s los • • • • JavaVM erzeugen Classpath der Javaklasse setzen EJBConnection erzeugen Javaklasse instanziieren Loggen Logging im EAServer • EAServer Log Profile konfigurieren • EJB erstellen und deployen (unterstützt durch XDoclet) • PB-Client erstellen J2EE Überblick J2EE 1.3 Session Beans Stateful Session Beans The EJB 2.0 Servlet 2.3 Entity Beans MDB JSP 1.2 Stateless Session Beans J2EE Tutorial http://java.sun.com/j2ee/tutorial/1_3-fcs/index.html Woraus besteht eine EJB • Component Interface (Lokal und/oder Remote) • Home Interface (Lokal und/oder Remote) • Bean Class • Deployment Descriptor (ejb-jar.xml) • Mit dem neuen EJB-Standard 3.0 wird sich viel ändern! XDoclet • XDoclet is an open source code generation engine. • It enables Attribute-Oriented Programming for java. In short, this means that you can add more significance to your code by adding meta data (attributes) to your java sources. This is done in special JavaDoc tags. • http://xdoclet.sourceforge.net/xdoclet/ind ex.html