Logging schön in ein Programm einbinden?

Schnoogle

Mitglied
Hallo,

ich beschäftige mich zur Zeit mit Logging in Java und hätte dazu mal eine Frage.

Was ist denn eine gute Praxis um Java Klassen den Zugriff auf die Logging-Funktionalität zu geben. Sollte ich eine Referenz an den Konstruktor übergeben? Sollte ich ein statisches Feld verwendet werden. Könnte man eine statische Klasse erstellen und diese wie System.out.printf() verwenden oder könnte man System.out bzw. System.err einen PrintStream zuweisen, der statt in die Konsole in ein Log schreibt?

Ich freue mich auf Antworten.
 
Hi,

gute Praxis ist das Verwenden eines bestehenden Logging-Frameworks, wie slf4j oder log4j. Einfach nur System.out zu verwenden ist gar nicht gut. Die Frameworks bieten weitreichende Einstellungen, vom Format der Logausgabe, bis zum Dateinamen und automatisches "Rollover" um Mitternacht oder wenn die Datei zu gross wird.

Ich persönlich bevorzuge inzwischen slf4j mit logback.
Die Referenz zum Logger wird normal als "private static final" in der Klasse gespeichert, jede Klasse hat ihren eigenen Logger. So ist im Log dann auch ersichtlich, welche Klasse welche Ausgaben macht. Mit den richtigen Konfigurationen kannst du dann sehr fein loggen und das Level auch zur Laufzeit anpassen.

Beispiel:
Java:
public class MyClass {
  private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
// ....

Links und Infos:
http://www.slf4j.org/
http://logback.qos.ch/
https://logging.apache.org/log4j/2.x/

Grüsse,
BK
 
Zurück