Die Klasse org.apache.logging.log4j.core.impl.Log4jContextFactory kann nicht erstellt werden

8

Ich benutze Springboot-Anwendung für ein Projekt und bekomme den folgenden Fehler beim Ausführen des Projekts von jar mit java -jar build/libs/com.user.admin.rest.services.jar . Aber es ist kein Blocker und ich konnte auf die APIs zugreifen, und der Logger funktioniert wie geplant. Ich möchte nur diesen Fehler beheben.

%Vor%

Ich habe die folgenden Zeilen für den Logger in der Datei build.gradle hinzugefügt.

compile 'org.apache.logging.log4j:log4j-api:2.8.2' compile 'org.apache.logging.log4j:log4j-core:2.8.2'

Und meine log4j2.xml Datei ist unten angegeben

%Vor%     
ysr 05.07.2017, 10:05
quelle

3 Antworten

1
  

Im Allgemeinen sollten Sie die Protokollierungsimplementierungen nie wechseln müssen. Logback sollte dir gut stehen. Wenn Sie jedoch entscheiden, Log4j oder Log4j2 lieber zu verwenden, müssen Sie Ihre Abhängigkeiten so ändern, dass sie den entsprechenden Starter für die zu verwendende Logging-Implementierung enthalten und Logback ausschließen.
Spring Boot in Action

Logback für Log4j2 in Gradle auslagern

  1. Schließen Sie die Standardprotokollierung aus
%Vor%
  1. Log4j2-Protokollierung hinzufügen
%Vor%

Sie finden Details zur Abhängigkeitsversion spring-boot-starter-log4j2 , die von Spring Boot hier .

    
Boris 18.01.2018 13:45
quelle
0

Ich habe das ähnliche Problem getroffen. Die Version von log4j-api und log4j-core muss mit übereinstimmen (und ClassNotFound ist hier eine merkwürdige Ausnahme). Wie du im Kommentar gesagt hast, hast du log4j-core-2.7.jar gefunden, aber ich vermute, dass dein log4j-api in der Version von 2.8.2 ist, wie deine obige Beschreibung zeigt.

Überprüfen Sie Ihre Abhängigkeit, entfernen Sie die alte Version von log4j-core und fügen Sie eine neue Version hinzu, um das Problem zu beheben.

    
Tony 20.01.2018 12:24
quelle
0

Diese Ausnahme wird in System.out gedruckt, da sich die Klasse nicht im Klassenpfad von Spring's Bootloader befindet. Dies ist jedoch nicht der Grund dafür, dass die Protokollierung nicht funktioniert oder die angegebene Konfigurationsdatei nicht verwendet wird.

Es ist ein Spring Boot Gradle Plugin Problem. Es sollte Log4j dem Bootloader-Klassenpfad hinzufügen, wenn es eine Abhängigkeit von Log4j feststellt.

    
Stijn Van Bael 24.01.2018 14:16
quelle