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.
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%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
Sie finden Details zur Abhängigkeitsversion spring-boot-starter-log4j2 , die von Spring Boot hier .
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.
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.
Tags und Links java logging spring-boot build.gradle