Unterschied bei der Verwendung von java.util.logging und Log4j Loggern

7

Ich entwickle eine Java-Anwendung, für die ich einen Protokollierungsmechanismus verwenden muss. Und jetzt bin ich verwirrt, um entweder Java-Bibliothekslogger oder Log4j Logger zu wählen.

Ich will also wissen, wann ich Java-Logger machen kann und wenn ich Log4j Logger gehen kann.

    
GuruKulki 13.02.2010, 10:56
quelle

5 Antworten

10

Ich würde vorschlagen, dass Sie stattdessen SLF4J verwenden, um Ihre Anwendung von bestimmten Protokollierungs-Frameworks zu entkoppeln. Es hat Adapter für verschiedene gängige Logging-Frameworks wie Jakarta Logging, JDK1.4 Logging, Log4j etc. und ist damit eine gute Abstraktion für Logging-Bedürfnisse.

    
Esko 13.02.2010, 11:13
quelle
3

Die Logger-Klasse war früher nicht Teil von jdk, daher entstanden mehrere Bibliotheksimplementierungen. Die Log4j-Bibliothek verfügt über einen der umfangreichsten Logging-Dienstprogramme (Formatierer, Appender usw.). Für die meisten Entwickler wäre dies jedoch ein Overkill und der einfache java.util.Logger würde ausreichen.

Ich persönlich benutze einen benutzerdefinierten Wrapper über meine Logger-Implementierung. Dadurch kann ich benutzerdefinierte Aufrufe definieren, um eine funktionale Protokollierung / Überwachung durchzuführen.

    
questzen 13.02.2010 11:03
quelle
3

Es gibt Apache Commoms Logging und SLF4J , von denen beide die zugrunde liegende Protokollierungsbibliothek abstrahieren.

In der Praxis tendiere ich dazu, Log4J über die eingebauten Logging-Klassen zu verwenden. Hauptsächlich, weil Log4J pro Web-App in einem Anwendungsserver konfiguriert werden kann, während die JDK-Protokollierung per JVM konfiguriert ist.

    
Nate 13.02.2010 11:19
quelle
3

Der Ansatz, den ich derzeit empfehlen würde, ist die Verwendung von SLF4J als Protokollierungs-API. Sie können dann Ihr Protokollierungs-Framework abhängig von Ihren Anforderungen auswählen, wenn Sie sie entdecken.

Ich habe einen Artikel darüber verfasst, was ich als beste Vorgehensweise für den Einstieg in SLF4J und ein einfaches "log auf System.out" ansehe, das momentan bei. Ссылка

Hoffentlich ist es hilfreich.

    
quelle
2

Ich finde Log4j flexibler, wenn es darum geht, den Logging-Code zu optimieren, ohne Code in der Produktionsumgebung neu zu kompilieren.

    
Inv3r53 13.02.2010 11:17
quelle