Kann mir jemand den Unterschied zwischen slf4j-log4j und log4j-over-slf4j sagen? Welcher Standard wird in einer Java-Webanwendung standardmäßig verwendet? Ich habe derzeit beide auf dem Klassenpfad und das verursacht eine Laufzeitausnahme, da der Webserver versucht, eine StackOverFlowException
zu verhindern.
Ausnahme:
java.lang.IllegalStateException:
Erkannt sowohl log4j-über-slf4j.jar UND slf4j-log4j12.jar auf dem Klassenpfad
slf4j-log4j verwendet log4j als Implementierung von slf4j.
log4j-über-slf4j bewirkt, dass Aufrufe der log4j-API an slf4j weitergeleitet werden.
Sie können diese beiden JARs nicht gleichzeitig verwenden.
Beide sind gültige Bibliotheken zu verwenden und sind gleichermaßen "Standard", es hängt vom Projekt ab.
Im Allgemeinen, wenn Ihr Projekt bereits log4j verwendet und Sie nicht in der Lage sind, alle Ihre log4j Logger auf slf4j Logger zu aktualisieren; log4j-over-slf4j ist eine schnelle Lösung, um sofort slf4j verwenden zu können.
Wenn Ihr Projekt jedoch neu ist oder noch keinen Logging-Mechanismus hat und Sie sich für slf4j entscheiden, wäre slf4j-log4j der richtige Weg, da slf4j nur an log4j gebunden werden soll.
Ich stimme dem Kommentar von c12 zu. Beenden Sie die Verwendung von log4j und verwenden Sie stattdessen slf4j und logback.
in meinem Projekt ist org.slf4j.impl.Log4jLoggerFactory
in
nicht in slf4j-log4j12.jar
Die Ausnahmebedingungsnachricht führt mich in die Irre