2009-06-02 5 views
6

Meine Webanwendung verwendet Java, Hibernate's JPA-Implementierung (EntityManager) und Spring. Was sind meine Logger-Optionen und was würden Sie empfehlen? Idealerweise wäre die Konfiguration einfach (eine Konfigurationsdatei für Hibernate, Spring und meinen Code).Empfohlener Logger zur Verwendung mit Java, Hibernate und Spring

+0

Duplizieren von http://stackoverflow.com/questions/354837/whats-up-with-logging-in-java – Jherico

+0

vielleicht ... das Q ist spezifisch für Hibernate und Spring –

+0

Leider gibt nur eine Antwort etwas über die Verwendung der Anmeldung in einer Methode, die für Spring und Hibernate spezifische Bedeutung hat. Auf jeden Fall lautet die wirkliche Antwort: "Jede der Logging-Implementierungen wird tun, was Sie wollen, da die meisten Bibliotheken wie Spring oder Hibernate die Implementierung agnostisch protokollieren". – Jherico

Antwort

13

Wenn Sie Anwendungen aus verschiedenen Frameworks erstellen, müssen Sie häufig vorhandene Logger umschließen, seien es log4j oder JUL oder JULI oder was auch immer. Die Standardanwendung hierfür ist die Simple Logging Facade for Java (SLF4J). Selbst wenn Ihre App SLF4J jetzt nicht benötigt, können Sie später eine Bibliothek hinzufügen, die sie benötigt, und es ist die beste Hoffnung für eine Konfigurationsdatei auf lange Sicht.

In diesem Sinne sollten Sie bei der Protokollierung von Paketen bleiben, die SLF4J unterstützt, aber normalerweise läuft es auf java.util.logging (JUL) oder Apache's log4j herunter. Dies ist seit einiger Zeit ein subject for debate und Sie können viele Meinungen auf beiden Seiten finden.

Persönlich, ich denke, es ist bedauerlich, dass Java Logging ist in this situation, und ich werde verwenden, was auch immer mir den geringsten Schmerz für die Situation gibt.

7

log4j ist der Standard-Logger, den ich verwende. Sie können Protokollierungsstufen und Protokolldateien nach Paket konfigurieren, sodass Hibernate, Spring und Ihr Code jeweils in die eigenen Protokolldateien gelangen können.

3

Ich benutze die Apache Commons Logging api mit log4j Konfigurationsdatei (die log4j Konfigurationsdatei ist einfach, leicht für Anfänger und zahlreiche Beispiele muss zu verstehen, um von der Arbeit.

Ich ziehe die commons mit API anmelden, weil ihre agnostisch über seine Konfigurationsdatei.Es kann über Dateiformate für beliebig viele gängige Logging-Pakete konfiguriert werden

Hier ist eine einfache Log4j-Setup, die Debug-Informationen für Ihre eigenen Pakete, INFO-Ebene für Frühling und Winterschlaf und WARN ausdrucken wird für alles andere:

# Global logging configuration 
log4j.rootLogger=WARN, stdout 
log4j.category.org.mydomain.org=DEBUG 
log4j.category.org.hibernate=INFO 
log4j.category.org.springframework=INFO 


# CONSOLE appender not used by default 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c - %m%n 
5

Niemand wurde jemals für die Wahl von log4j gefeuert.

Überprüfen Sie auch slf4j.

4

Hibernate setzt bereits auf SLF4J. Wenn ich mich nicht irre, verwendet die aktuelle Version von Spring Commons-Logging, aber die nächste Version wird auch SLF4J verwenden. Wie auch immer, Sie könnten consolidate all logging through SLF4J (siehe den Abschnitt über jcl-über-slf4j.jar). Sobald dies erledigt ist, können Sie entweder java.util.logging, log4j oder logback als zugrunde liegendes Logging-Framework auswählen.