78
Einleitung Grundlagen Stealth-Logger Resourcen Fragen Easy Logging Einf¨ uhrung in Log::Log4perl qw/:easy/ Thomas Fahle FrOSCon 2011, St. Augustin, 21. August 2011 Thomas Fahle Easy Logging Einf¨ uhrung in Log::Log4perl qw/:easy/

Log4perl - Easy Logging - FrOSCon 2011

Embed Size (px)

DESCRIPTION

Easy Logging Einfü̈hrung in Log::Log4perl qw/:easy/

Citation preview

Page 1: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen

Easy LoggingEinfuhrung in Log::Log4perl qw/:easy/

Thomas Fahle

FrOSCon 2011, St. Augustin, 21. August 2011

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 2: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Ubersicht Uber Log::Log4perl

Uber diesen Vortrag

Einfuhrung in Log::Log4perl

Log::Log4perl Grundlagen

Easy Mode - Stealth-Logger

BasicsDatenstrukturenAppenderPackagesPerformance

Resourcen im Netz - Mehr Infos

Slides online

http://www.slideshare.net/thomasfahle

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 3: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Ubersicht Uber Log::Log4perl

Log::Log4perl?

Port von log4j

Author: Michael Schilli

sehr ausgereiftes Logging-Framework (Profilosung)

Umfangreiche, komplette, aber oft verwirrende Dokumentation

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 4: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Ubersicht Uber Log::Log4perl

Log::Log4perl

liefert Information aus dem tatsachlichen Betrieb desProgramms

durch Konfigurationsdateien konnen Loggingstatements, dieeigentlich zum Testen/Debuggen gedacht sind imausgeliefertem Code verbleiben

Ausgabeziele und Formate konnen uber Konfigurationsdateienunterschiedlichen Umgebungen und Bedurfnissen angepasstwerden.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 5: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Ubersicht Uber Log::Log4perl

Log::Log4perl Betriebsmodi

Log::Log4perl kennt zwei Betriebsmodi

Standardmodus: Sehr sehr viele fein granulierte Optionen

Easy Mode oder Stealth Logger: komfortables, einfachesLoggen, eben EASY.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 6: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritaten

Prioritaten oder Loglevel

(lat. prior = der Vordere) legen die Wichtigkeit einesLoggingereignisses fest.Ob ein Logger die ihm ubergebenen Nachrichten tatsachlichweitergibt oder unterdruckt, wird in der Konfiguration festgelegt.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 7: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Vordefinierte Prioritaten

Log::Log4perl stellt sechs vordefinierte Loglevel zur Verfugung

Die Level in absteigender Reihenfolge:

FATAL

ERROR

WARN

INFO

DEBUG

TRACE

Zusatzlich wird auch das Pseudolevel ALWAYS bereitgestellt.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 8: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat TRACE

TRACE

Das Level TRACE kennzeichnet sehr, sehr feinkornige Ereignisse -feinkorniger als das nachste Level DEBUG.

Beispiel:

TRACE( ” $ b y t e s b y t e s t r a n s f e r r e d ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 9: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat DEBUG

DEBUG

Das Level DEBUG kennzeichnet feinkornige Ereignisse, die nutzlichsind, um eine Applikation zu debuggen.

Beispiel:

DEBUG( ”HTTP GET r e q u e s t OK” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 10: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat INFO

INFO

Das Level INFO kennzeichnet grobkornige Ereignisse, die uber denFortschritt des Programms informieren.

Beispiel:

INFO ( ” S t a r t e $0” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 11: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat WARN

WARN

Das Level WARN kennzeichnet Ereignisse, die auf kleine Fehlerhinweisen. Das Programm kann aber weiterlaufen.

Beispiel:

WARN( ”HTTP GET f a i l e d , r e t r y i n g ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 12: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat ERROR

ERROR

Das Level ERROR kennzeichnet Ereignisse, die auf großere Fehlerhinweisen. Das Programm kann aber oft noch weiterlaufen.

Beispiel:

ERROR( ”Out o f r e t r i e s ! ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 13: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat FATAL

FATAL

Das Level FATAL kennzeichnet Ereignisse, die auf schwerwiegendeFehler hinweisen. Das Programm wird meist beendet werdenmussen.

Beispiel:

FATAL( ”Can ’ t c o n n e c t to d a t a b a s e . ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 14: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Prioritat ALWAYS

ALWAYS

Das Level ALWAYS kennzeichnet Ereignisse, die immer geloggtwerden sollen. Sie werden niemals geblockt.

Beispiel:

ALWAYS( ” This w i l l be p r i n t e d r e g a r d l e s so f t he l o g l e v e l . ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 15: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Konfiguration Prioritat

Konfiguration

entscheidet, wie sich ein Logger verhalt.

d.h. ob wie wohin geloggt wird.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 16: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Konfiguration und Prioritat

Prioritat KonfigurationFATAL FATALERROR ERRORWARN WARNINFO INFODEBUG DEBUGTRACE TRACE

Prioritat und Konfiguration

Zu jeder Prioritat im Programm gehort eine entsprechendePrioritat in der Konfiguration.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 17: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Beispiel: Konfiguriertes Level WARN

Prioritat Konfiguriertes LevelFATAL +ERROR +WARN WARNINFO -DEBUG -TRACE -

Konfiguriertes Level WARN

Nachrichten unterhalb von WARN werden nicht ausgegeben.

Nachrichten der Prioritat WARN oder hoher werdenausgegeben.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 18: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Beispiel: Konfiguriertes Level ERROR

Prioritat Konfiguriertes LevelFATAL +ERROR ERRORWARN -INFO -DEBUG -TRACE -

Konfiguriertes Level ERROR

Nachrichten unterhalb von ERROR werden nicht ausgegeben.

Nachrichten der Prioritat ERROR oder hoher werdenausgegeben.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 19: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Beispiel: Konfiguriertes Level DEBUG

Prioritat Konfiguriertes LevelFATAL +ERROR +WARN +INFO +DEBUG DEBUGTRACE -

Konfiguriertes Level DEBUG

Nachrichten unterhalb von DEBUG werden nicht ausgegeben.

Nachrichten der Prioritat DEBUG oder hoher werdenausgegeben.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 20: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Appender

Appender/Datensenken

Appender sind Datensenken, in die Log-Nachrichten geschriebenwerden.Als Datensenke lasst sich von der einfachen Bildschirmausgabe(STDERR) uber Logdateien, Syslog, SMS- oderE-Mail-Benachrichtigung, bis hin zu Datenbanken, so ziemlich allesverwenden, was man sich als Ausgabe-Medium vorstellen kann.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 21: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Log::Log4perl Appender

Log::Log4perl Appender (Auswahl)

Log::Log4perl::Appender::Screen

Log::Log4perl::Appender::File

Log::Log4perl::Appender::Socket

Log::Log4perl::Appender::DBI

Log::Log4perl::Appender::Synchronized

Log::Log4perl::Appender::RRDs

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 22: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Log::Dispatch Appender

Log::Dispatch Appender (Auswahl)

Log::Dispatch::ApacheLog

Log::Dispatch::DBI

Log::Dispatch::Email

Log::Dispatch::Email::MIMELite

Log::Dispatch::File

Log::Dispatch::FileRotate

Log::Dispatch::Screen

Log::Dispatch::Syslog

u.v.a.m. ...

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 23: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Layouts

Layouts - Informationsumfang

Layouts formatieren Log-Nachrichten und legen denInformationsumfang fest.

Log-Nachrichten konnen in einer printf()-ahnlichen Syntaxeinfach an die eigenen Bedurfnisse angepasst (formatiert)werden.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 24: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Layouts

Layouts - Formatierungsanweisungen 1

%c Category of the logging event.

%C Fully qualified package (or class) name of the caller

%d Current date in yyyy/MM/dd hh:mm:ss format

%F File where the logging event occurred

%H Hostname (if Sys::Hostname is available)

%l Fully qualified name of the calling method followed by thecallers source the file name and line number betweenparentheses.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 25: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Prioritaten Appender Layouts

Layouts

Layouts - Formatierungsanweisungen 2

%T A stack trace of functions called

%L Line number within the file where the log statement wasissued

%m The message to be logged

%M Method or function where the logging request was issued

%n Newline (OS-independent)

%p Priority of the logging event

%P pid of the current process

%r Number of milliseconds elapsed from program start tologging

%% A literal percent (%) sign

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 26: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Easy Mode (Stealth Logger)

qw/:easy/

1 #! / u s r / b i n / p e r l2 use s t r i c t ;3 use w a r n i n g s ;4

5 use Log : : L o g 4 p e r l qw / : e a s y / ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 27: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Automatisch importierte Funktionen qw/:easy/

Level/Priortitaten

FATAL

ERROR

WARN

INFO

DEBUG

TRACE

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 28: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Automatisch importierte Funktionen qw/:easy/

Convenience: Log and ...

LOGWARN

LOGDIE

LOGEXIT

LOGCARP

LOGCLUCK

LOGCROAK

LOGCONFESS

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 29: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Automatisch importierte Konstanten qw/:easy/

Level/Priortitaten

$FATAL

$ERROR

$WARN

$INFO

$DEBUG

$TRACE

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 30: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Easy Mode initialisieren 1

easy init()

1 #! / u s r / b i n / p e r l2 use s t r i c t ;3 use w a r n i n g s ;4 use Log : : L o g 4 p e r l qw / : e a s y / ;5 Log : : L o g 4 p e r l−>e a s y i n i t ( ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 31: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Easy Mode initialisieren 2

easy init()

initialisiert einen einfachen Logger.

Der Appender ist vom Typ SCREEN, d.h. die Log-Nachrichtenerscheinen auf STDERR.

Das Layout der Nachrichten wird auf das Format ”%d%m%n”gesetzt.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 32: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Hallo Welt im Easy Mode

Hallo Welt!

1 use Log : : L o g 4 p e r l qw / : e a s y / ;2 Log : : L o g 4 p e r l−>e a s y i n i t ( ) ;3 INFO ( ” S t a r t e $0” ) ;4 p r i n t ” H a l l o Welt !\ n” ;5 INFO ( ” Beende $0” ) ;

Ausgabe

1 2011/08/20 1 5 : 3 1 : 2 1 S t a r t e h a l l o w e l t . p l2 H a l l o Welt !3 2011/08/20 1 5 : 3 1 : 2 1 Beende h a l l o w e l t . p l

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 33: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Loglevel im Easy Mode konfigurieren

Prioritat/Level DEBUG

1 use Log : : L o g 4 p e r l qw / : e a s y / ;2 Log : : L o g 4 p e r l−>e a s y i n i t ( {3 l e v e l => $DEBUG,4 } ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 34: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Layout im Easy Mode konfigurieren

Layout

1 use Log : : L o g 4 p e r l qw / : e a s y / ;2 Log : : L o g 4 p e r l−>e a s y i n i t ( {3 l e v e l => $DEBUG,4 l a y o u t =>5 ’%d [%M] %F %L> %m%n ’ , } ) ;

Ausgabe

1 2011/08/20 1 6 : 2 7 : 3 6 [ main : : ] h a l l o w e l t . p l \2 10> S t a r t e h a l l o w e l t . p l3 H a l l o Welt !4 2011/08/20 1 6 : 2 7 : 3 6 [ main : : ] h a l l o w e l t . p l \5 12> Beende h a l l o w e l t . p l

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 35: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Ausgabemedium im Easy Mode konfigurieren

Ausgabe in eine Datei

1 use Log : : L o g 4 p e r l qw / : e a s y / ;2 Log : : L o g 4 p e r l−>e a s y i n i t ( {3 l e v e l => $DEBUG,4 l a y o u t =>5 ’%d [%M] %F %L> %m%n ’ ,6 f i l e =>7 ’>> . / t e s t . l o g ’ ,8 } ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 36: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Skalare Variablen

Skalare Variablen werden wie gewohnt expandiert

1 my $ c o u n t e r = 0 ;2 # Double Quotes3 DEBUG( ” Counter $ c o u n t e r ” ) ;

Tipp: Begrenzer um Variablen setzen

1 my $ c o u n t e r = 0 ;2 # Double Quotes3 DEBUG( ” Counter <$counte r>” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 37: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Konstanten

Bei Konstanten kommt der Verkettungsoperator . zum Einsatz.

1 use c o n s t a n t PI => 4 ∗ atan2 ( 1 , 1 ) ;2 DEBUG( ” Konstante PI ” . PI . ” . . . ” ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 38: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Arrays, Hashes und komplexe Datenstrukturen

Data::Dumper to the rescue

Arrays, Hashes und komplexe Datenstrukturen lassen sichmeist nur sinnvoll mit Data::Dumper loggen.

Data::Dumper in Version 2.09 ist seit Perl 5.005 einCoremodule.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 39: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Kleine Arrays

Kleine Arrays - Expansion

1 sub f o o {2 DEBUG( ” Parameter : @ ” ) ;3 }

Kleine Arrays - foreach

1 my @array = 1 . . 1 0 ;2 f o r e a c h my $e lement ( @ar ray ) {3 DEBUG( ” A r r a y e l e m e n t : <$element>” ) ;4 }

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 40: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Arrays

Arrays (langsam) dumpen

1 use Data : : Dumper ;2 # t u r n o f f a l l p r e t t y p r i n t3 $Data : : Dumper : : I n d e n t = 0 ;4 my @array = 1 . . 1 0 ;5 TRACE( ” Array : ” , Dumper ( \@array ) ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 41: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Kleine Hashes

Kleine Hashes - Expansion

1 my %hash ;2 DEBUG( ”Hash @{ [ %hash ]} ” ) ;

Kleine Hashes - while

1 w h i l e ( my ( $key , $ v a l u e ) = each %hash ) {2 DEBUG( ”Hash : Key <$key> Value <$ v a l u e>” ) ;3 }

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 42: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Hashes

Hashes (langsam) dumpen

1 use Data : : Dumper ;2 # t u r n o f f a l l p r e t t y p r i n t3 $Data : : Dumper : : I n d e n t = 0 ;4 my %hash ;5 TRACE( ”Hash : ” , Dumper ( \%hash ) ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 43: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Need for Speed - message output filter format

Arrays

1 TRACE( ” Array : ” , {2 f i l t e r => \&Data : : Dumper : : Dumper ,3 v a l u e => \@array } ) ;

Hashes

1 TRACE( ”Hash : ” , {2 f i l t e r => \&Data : : Dumper : : Dumper ,3 v a l u e => \%hash } ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 44: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Message output filter format

Message output filter format

Log::Log4perl wird die filter Funktion, erst dann aufrufen,wenn die Nachricht wirklich in einen Appender geschriebenwird.

Die filter Funktion erwartet eine Referenz auf einUnterprogramm, welches den Dump ausfuhrt, und eineReferenz auf die zu loggende Datenstruktur.

Spart spurbar Rechenzeit und Hauptspeicher.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 45: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Dump Profiling

Beispielprogramm

1 my %hash = ( ) ;2 f o r ( 1 . . 10 000 ) {3 $hash { $ } = 1 ;4 }5

6 w h i l e ( my ( $key , $ v a l u e ) = each %hash ) {7 TRACE( ”Hash : Key <$key> Value <$ v a l u e>” ) ;8 }9 TRACE( ”Hash : ” , Dumper ( \%hash ) ) ;

10 TRACE( ”Hash : ” , {11 f i l t e r => \&Data : : Dumper : : Dumper ,12 v a l u e => \%hash } ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 46: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Dump Profiling - Konfiguriertes Level TRACE

Konfiguriertes Level TRACE

d.h., es soll geloggt werden.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 47: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Dump Profiling - Konfiguriertes Level INFO

Konfiguriertes Level INFO

d.h., es soll nicht geloggt werden.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 48: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Konfiguration Appender

Konfiguration

entscheidet, wie sich ein Logger verhalt.

d.h. ob wann wie wohin geloggt wird.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 49: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Easy Mode aus Konfigurationsdatei initialisieren

init()

1 #! / u s r / b i n / p e r l2 use s t r i c t ;3 use w a r n i n g s ;4 use Log : : L o g 4 p e r l qw / : e a s y / ;5 Log : : L o g 4 p e r l−> i n i t ( ’ l 4 p . c o n f ’ )6 or d i e $ ! ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 50: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Konfigurationsdatei Beispiel

Log::Log4perl Konfigurationsdatei

1 l o g 4 p e r l . l o g g e r = TRACE, A12 l o g 4 p e r l . appender . A1 \3 = Log : : D i s p a t c h : : F i l e4 l o g 4 p e r l . appender . A1 . f i l e n a m e = . / t e s t . l o g5 l o g 4 p e r l . appender . A1 . mode = append6 l o g 4 p e r l . appender . A1 . l a y o u t \7 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t8 l o g 4 p e r l . appender . A1 . l a y o u t . C o n v e r s i o n P a t t e r n \9 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 51: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Fehlende Konfigurationsdateien 1

Try

1 use Log : : L o g 4 p e r l qw / : e a s y / ;2 my $ l o g 4 p c f g f i l e = ’ /tmp/XXXXX. c f g ’ ;3

4 # t r y to i n i t w i t h a c o n f i g f i l e5 e v a l {6 Log : : L o g 4 p e r l−> i n i t ( $ l o g 4 p c f g f i l e )7 or d i e ” E r r o r $ l o g 4 p c f g f i l e − $ ! ” ;8 } ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 52: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Fehlende Konfigurationsdateien 2

Catch:

1 # c a t c h e r r o r s from i n i t and use a s i m p l e2 # c o n f i g u r a t i o n , s e n d i n g e v e r y message to3 # STDERR4 i f ( $@ ) {5 Log : : L o g 4 p e r l−>e a s y i n i t ( {6 ’ l e v e l ’ => $DEBUG,7 ’ l a y o u t ’ => ”%d %p> %F{1} : %L %M − %m%n” ,8 } ) ;9 WARN( ” F a l l i n g back to e a s y c o n f i g u r a t i o n ! ” ) ;

10 }

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 53: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

init once - nur ein einziges Mal initialisieren

init once() - Nur initialisieren, falls noch nicht initialisiert

1 # I n i t o r s k i p i f a l r e a d y done2 Log : : L o g 4 p e r l−> i n i t o n c e ( $ l o g 4 p c f g f i l e ) ;

mod perl

Entweder in der startup.pl initialisieren oder init once() verwenden.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 54: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

init and watch - Konfiguration im laufendem Betriebandern.

init and watch() - zeitgesteuert.

1 my $ d e l a y = 3 0 0 ; # s e c o n d s2 Log : : L o g 4 p e r l−>i n i t a n d w a t c h (3 $ l o g 4 p c f g f i l e , $ d e l a y ) ;

init and watch() - signalgesteuert.

1 Log : : L o g 4 p e r l−>i n i t a n d w a t c h (2 $ l o g 4 p c f g f i l e , ’HUP ’ ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 55: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Logdateien rotieren

Log::Log4perl Konfigurationsdatei

1 l o g 4 p e r l . l o g g e r = TRACE, A12 # Appender A13 l o g 4 p e r l . appender . A1

= Log : : D i s p a t c h : : F i l e R o t a t e4 l o g 4 p e r l . appender . A1 . max = 105 l o g 4 p e r l . appender . A1 . s i z e = 20 0006 l o g 4 p e r l . appender . A1 . f i l e n a m e = . / l o g s / l o g f i l e . l o g7 l o g 4 p e r l . appender . A1 . mode = append8 l o g 4 p e r l . appender . A1 . l a y o u t \9 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t

10 l o g 4 p e r l . appender . A1 . l a y o u t . C o n v e r s i o n P a t t e r n \11 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 56: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Logs per E-Mail versenden

Log::Log4perl Konfigurationsdatei

1 l o g 4 p e r l . l o g g e r = TRACE, M a i l e r2 l o g 4 p e r l . appender . M a i l e r

= Log : : D i s p a t c h : : Emai l : : Mai lSend3 l o g 4 p e r l . appender . M a i l e r . to

= yo u r @e m ai l . a d d r e s s4 l o g 4 p e r l . appender . M a i l e r . s u b j e c t

= My Program N o t i c e5 l o g 4 p e r l . appender . M a i l e r . b u f f e r e d = 16 l o g 4 p e r l . appender . M a i l e r . l a y o u t \7 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t8 l o g 4 p e r l . appender . M a i l e r . l a y o u t . C o n v e r s i o n P a t t e r n \9 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 57: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Logdateien rotieren und FATALs per E-Mail versenden 1

Log::Log4perl Konfigurationsdatei 1

1 l o g 4 p e r l . l o g g e r = TRACE, A1 , M a i l e r2 # Appender A13 l o g 4 p e r l . appender . A1 \4 = Log : : D i s p a t c h : : F i l e R o t a t e5 l o g 4 p e r l . appender . A1 . max = 106 l o g 4 p e r l . appender . A1 . s i z e = 20 0007 l o g 4 p e r l . appender . A1 . f i l e n a m e = . / l o g s / l o g f i l e . l o g8 l o g 4 p e r l . appender . A1 . mode = append9 l o g 4 p e r l . appender . A1 . l a y o u t \

10 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t11 l o g 4 p e r l . appender . A1 . l a y o u t . C o n v e r s i o n P a t t e r n \12 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 58: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Logdateien rotieren und FATALs per E-Mail versenden 2

Log::Log4perl Konfigurationsdatei 2

1 # M a i l e r2 l o g 4 p e r l . appender . M a i l e r \3 = Log : : D i s p a t c h : : Emai l : : Mai lSend4 l o g 4 p e r l . appender . M a i l e r . to \5 = yo u r @e m ai l . a d d r e s s6 l o g 4 p e r l . appender . M a i l e r . s u b j e c t \7 = My Program N o t i c e8 l o g 4 p e r l . appender . M a i l e r . b u f f e r e d = 19 l o g 4 p e r l . appender . M a i l e r . m i n l e v e l = f a t a l

10 l o g 4 p e r l . appender . M a i l e r . l a y o u t \11 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t12 l o g 4 p e r l . appender . M a i l e r . l a y o u t . C o n v e r s i o n P a t t e r n \13 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 59: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Syslog

Log::Log4perl Konfigurationsdatei

1 l o g 4 p e r l . l o g g e r = TRACE, S y s l o g2

3 l o g 4 p e r l . appender . S y s l o g= Log : : D i s p a t c h : : S y s l o g

4 l o g 4 p e r l . appender . S y s l o g . i d e n t = MyIdent5 l o g 4 p e r l . appender . S y s l o g . f a c i l i t y = u s e r6 l o g 4 p e r l . appender . S y s l o g . l a y o u t \7 = Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t8 l o g 4 p e r l . appender . S y s l o g . l a y o u t . C o n v e r s i o n P a t t e r n \9 = %d %p> %F{1}:%L %M − %m%n

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 60: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Loggen in eine Datenbank 1

Datenbank und Loggingtabelle erstellen

1 c r e a t e d a t a b a s e l o g s ;2 \u l o g s3 c r e a t e t a b l e L (4 i d BIGINT u n s i g n e d AUTO INCREMENT NOT NULL ,5 da te DATETIME,6 l o g l e v e l VARCHAR( 2 0 ) ,7 c a t e g o r y VARCHAR( 2 5 5 ) ,8 f i l e VARCHAR( 2 5 5 ) ,9 l i n e INT ( 1 0 ) UNSIGNED ,

10 message TEXT,11 PRIMARY KEY( i d ) ) ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 61: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Loggen in eine Datenbank 2

Log::Log4perl Konfigurationsdatei 1

1 l o g 4 p e r l . l o g g e r = TRACE, DB2 l o g 4 p e r l . appender .DB = \3 Log : : L o g 4 p e r l : : Appender : : DBI4 l o g 4 p e r l . appender .DB. l a y o u t = \5 Log : : L o g 4 p e r l : : Layout : : P a t t e r n L a y o u t6 l o g 4 p e r l . appender .DB. d a t a s o u r c e = \7 DBI : mysql : l o g s : l o c a l h o s t8 l o g 4 p e r l . appender .DB. username = l o g u s e r9 l o g 4 p e r l . appender .DB. password = geheym

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 62: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Loggen in eine Datenbank 3

Log::Log4perl Konfigurationsdatei 2

1 l o g 4 p e r l . appender .DB. s q l = i n s e r t i n t o L \2 ( date , l o g l e v e l , c a t e g o r y , f i l e , l i n e , message ) \3 VALUES ( ? , ? , ? , ? , ? , ? )4 l o g 4 p e r l . appender .DB. params . 1 = %d5 l o g 4 p e r l . appender .DB. params . 2 = %p6 l o g 4 p e r l . appender .DB. params . 3 = %c7 l o g 4 p e r l . appender .DB. params . 4 = %F8 l o g 4 p e r l . appender .DB. params . 5 = %L9 l o g 4 p e r l . appender .DB. params . 6 = %m

10 # For e f f i c i e n c y s a k e l o g o n l y a f t e r n messages11 #l o g 4 p e r l . appender .DB. b u f f e r S i z e = 3

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 63: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Loggen in eine XML-Datei

Log::Log4perl Konfigurationsdatei

1 l o g 4 p e r l . l o g g e r = WARN, A12 l o g 4 p e r l . appender . A1 = \3 Log : : L o g 4 p e r l : : Appender : : F i l e4 l o g 4 p e r l . appender . A1 . f i l e n a m e = l o g . xml5 l o g 4 p e r l . appender . A1 . l a y o u t \6 = Log : : L o g 4 p e r l : : Layout : : XMLLayout7 l o g 4 p e r l . appender . A1 . l a y o u t . L o c a t i o n I n f o = TRUE8 l o g 4 p e r l . appender . A1 . l a y o u t . Encoding = i s o8 8 5 9−1

XML

kann von Logviewern wie z.B. Chainsaw oder Lilith gelesen werden

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 64: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Chainsaw

Bildnachweis: http://logging.apache.org/chainsaw/index.html

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 65: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Lilith

Bildnachweis: http://sourceforge.net/projects/lilith/

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 66: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Log::Lop4perl in Packages

Packages

1 package Foo ;2 use s t r i c t ;3 use w a r n i n g s ;4 use Log : : L o g 4 p e r l qw / : e a s y / ;5

6 sub f o o {7 my $bar = s h i f t @ ;8 DEBUG( ” Fooing <$bar>” ) ;9 # . . . do someth ing

10 }11 1 ;

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 67: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Log::Lop4perl in Packages

In Packages

wird nicht initialisiert

wird nicht konfiguriert

werden Log Prioritaten vergeben

Stealth (engl. Heimlichkeit)

Wenn ein Logger nicht durch ein Programm initialisiert wird,wird der Logging Code im Package nicht ausgefuhrt.

Das hat den Charme, das man auch Pakete Log::Log4perlfahig machen kann, ohne treibende Programme zu anderen.

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 68: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Workflow

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 69: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Basics Datenstrukturen Appender Packages Performance

Performance

Je mehr geloggt wird, desto schlechter die Performance

Loglevel WARN fur produktive Systeme

Loglevel ERROR fur produktive Systeme mit hoher Last

Spezielle Konfigurationen nutzen, falls spezielle Problemegelost werden mussen

Ein Profiler wie Devel::NYTProf ist hilfreich

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 70: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

RTFM

Log::Log4perl wird mit umfangreicher Dokumentation ausgeliefert.

The log4perl project – log4j for Perlhttp://mschilli.github.com/log4perl/

Manualhttp://search.cpan.org/perldoc?Log::Log4perl

FAQhttp://search.cpan.org/perldoc?Log::Log4perl::FAQ

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 71: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

Artikel

Michael Schilli

Logging nach Bedarf mit Log::Log4perl - Wachsame Schlaferhttp://www.linux-magazin.de/heft_abo/ausgaben/

2003/01/wachsame_schlaefer

Retire your debugger, log smartly with Log::Log4perl! http://www.perl.com/pub/a/2002/09/11/log4perl.html

Praktisch jeder Artikel im Linux-Magazin - Entwicklung - Perlhttp://www.linux-magazin.de/Themengebiete/

Entwicklung/Perl

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 72: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

Artikel

Diverse Autoren

brian d foy: Mastering Perl: Logginghttp://www252.pair.com/comdog/mastering_perl/

Chapters/13.logging.html

Horshack’s Log4perl Pagehttp://lena.franken.de/perl_hier/log4perl.html

Kennedy Clark: Using Catalyst with Log4perlhttp://www.catalystframework.org/calendar/2006/11

Patrick H. Piper: 8 Useful Log::Log4perl Recipeshttp://netlinxinc.com/netlinx-blog/52-perl/

126-eight-loglog4perl-recipes.html

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 73: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

Vortrage

Michael Schilli

Log4perl: the Only Logging System You’ll Ever Need -OSCON 2008http://mschilli.github.com/log4perl/l4p.ppt

Talk at YAPC 2007 (Houston, TX) - Smart Logging withLog4perl: http://perlmeister.com/log4perl_yapc.html

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 74: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

Vortrage

Diverse Autoren

Madmongers - Logginghttp://www.madmongers.org/uploads/Mc/oB/

McoBWGNx-nYiEpqQfYz4kA/logging---madmongers.pdf

WebGUI TV - Logginghttp://www.webgui.org/wgtv/logging

Renee Backer - Log::Log4perl (FrOSCon 2010)http://www.renee-baecker.de/vortraege.html

Thomas Fahle - Log::Log4perl qw/:easy/http://www.slideshare.net/thomasfahle/

loglog4perl-qweasy-presentation

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 75: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen RTFM Vortrage Artikel Recommended Readings

log4j zum Vergleich

log4j

Ceki Gulcu - Short introduction to log4jhttp://logging.apache.org/log4j/1.2/manual.html

Apache log4jTM http://logging.apache.org/log4j/

Vipan Singla - Don’t Use System.out.println! Use Log4jhttp://www.vipan.com/htdocs/log4jhelp.html

Logback Project - intended as a successor to the popular log4jproject - http://logback.qos.ch/

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 76: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Fragen Danke! Perl.org

Fragen?

Fragen?

Fragen!

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 77: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Fragen Danke! Perl.org

Vielen Dank!

Danke!

Vielen Dank!

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/

Page 78: Log4perl - Easy Logging - FrOSCon 2011

Einleitung Grundlagen Stealth-Logger Resourcen Fragen Fragen Danke! Perl.org

Perl.org

When you need Perl think Perl.org

http://www.Perl.org

http://learn.Perl.org

http://blogs.Perl.org

http://jobs.Perl.org

Flexible & Powerful

That’s why we love Perl!

Thomas Fahle Easy Logging Einfuhrung in Log::Log4perl qw/:easy/