java.lang.IllegalStateException: Es wurden sowohl log4j-over-slf4j.jar als auch slf4j-log4j12.jar für die Klasse pat gefunden

8

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

    
c12 19.08.2013, 17:59
quelle

2 Antworten

20

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.

    
FGreg 19.08.2013, 18:21
quelle
2

in meinem Projekt ist org.slf4j.impl.Log4jLoggerFactory in

%Vor%

nicht in slf4j-log4j12.jar

Die Ausnahmebedingungsnachricht führt mich in die Irre

    
user2665136 30.09.2013 10:35
quelle

Tags und Links