Pixel

setzer

.de
Aktuellste Kommentare:
  • Stefan schrieb:
    Schöner Beitrag und nützliche Links, vielen Dank dafür!...
    [lesen]
  • Pixelsetzer schrieb:
    Hi Marius, danke für den Hinweis. Ich hab das gar nicht gesehen, dass die Zeichen unformatiert wurden. Ich habe es gleich mal geändert. ;-) Wegen...
    [lesen]
  • Marius Gerum schrieb:
    Sehr schön, gefällt mir gut :-) OOP ftw ;-) Marius...
    [lesen]
  • Marius Gerum schrieb:
    upps, im letzten Kommentar ... wusste nicht dass HTML funzt, ich meinte > und < ^^...
    [lesen]
  • Marius Gerum schrieb:
    Hi, schöner Artikel und gut strukturierter Code. 2 Dinge würden mir an dieser Stelle vielleicht noch fehlen, und zwar das fertige Applet zum sofo...
    [lesen]

Logging mit Log4j

Nach dem ich die von Java mitgelieferte Logger-API vorgestellt habe, möchte in diesen Artikel Log4j von Apache vorstellen.
Diese API hat ein paar Vorteile gegenüber des Standard Loggingsystems von Java. Es lässt sich leichter konfigurieren und einbinden, da eine externe Konfigurationsfile verwendet werden kann. In dieser Konfigurationsdatei kann festgelegt werden, was geloggt und wo dieser Log ausgegeben, oder gespeichert werden soll. Zusätzlich lässt sich dort der Log nach eigenen Wünschen gestalten.

Log4j in ein Projekt einfügen

Als erstes muss die JAR-Datei beschafft werden. Diese ist im Log4j-Paket enthalten, dass von der Projektseite heruntergeladen werden kann.
Nach dem die apache-log4j.zip heruntergeladen wurde, muss diese in ein beliebiges Verzeichnis entpackt werden.
Anschließen kann die benötigte JAR in das bestehende Java-Projekt eingefügt werden.
In Eclipse geht das folgendermaßen:
Rechtsklick auf den Projekt-Ordner -> Properties -> Java Build Path -> Tab: Libraries -> Add External JARs
Nun sucht man im Verzeichnis apache-log nach der log4j.jar und wählt diese aus.

Log4j verwenden

In den Klassen, in denen der Logger verwendet werden soll, muss der Logger mit der Zeile:

private final static Logger log = Logger.getLogger( Log4jDemo.class );

geholt werden.

Dabei ist wichtig, dass der richtige Logger importiert wird und zwar folgender:
org.apache.log4j.Logger
Als nächstes erzeugen wir eine Datei log4j.properties im Sourcecode-Verzeichnis (in Eclipse src).
In dieser Datei wird der Logger konfiguriert.

#Als ersten setzen wir den Root-Logger auf das Log-Level Debug:
log4j.rootLogger=DEBUG, A
 
#Dann weisen wir dem Logger "A" einen appender zu und zwar für die Konsolenausgabe:
log4j.appender.A=org.apache.log4j.ConsoleAppender
 
#Anschliessend definieren wir noch ein Layout:
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%-5p %c:%t [%L]-> %m%n
 
#und wählen das Ziel der Ausgabe:
 
log4j.appender.A.stdout.Target=System.out

In der gewünschten Klasse kann der Logger nun mit z.B. log.info("Das ist eine Info"); oder log.error("Fehler"); verwendet werden.

Soll die Konfigurationsdatei an einem anderen Ort gespeichert werden, kann die Methode PropertyConfigurator.configure("log4j.properties"); verwendet werden.

Die gesamte Testklasse sieht dann wie folgt aus:

import org.apache.log4j.Logger;
 
public class Log4jDemo {
  private final static Logger log = Logger.getLogger( Log4jDemo.class ); 
 
  public static void main( String[] args ) {
    //PropertyConfigurator.configure("log4j.properties");
    log.info("Das ist eine Info" );
    log.error("Fehler");
  }
}

und ergibt diesen Log:

INFO  log4j.Log4jDemo:main [17]-> Das ist eine Info
ERROR log4j.Log4jDemo:main [18]-> Fehler

Jetzt dürften die Vorteile gegenüber dem Standard Logger klar geworden sein.
In der Klasse befindet sich sehr wenig Code, der für den Logger verwendet wird und der Logger kann schnell und einfach, durch die externe Datei, umkonfiguriert werden.

Eine Sache ist noch zu beachten, sollte man komplexere Werte Loggen wollen, kann mit log.isEnabledFor(Priority.DEBUG) eine Performancesteigerung erreicht werden. So kann geprüft werden, ob überhaupt DEBUG-Werte geloggt werden.

Kommentar schreiben:

Mit der Eingabe des Sicherheits-Codes stimmen Sie der Speicherung ihrer IP-Adresse und ihrer anderen angegebenen Daten zu.
Die IP-Adresse und ihre E-Mail wird nur für die Spam-Abwehr benötigt.