Es scheint, dass Springboot sich automatisch so konfiguriert, dass Logback mit Tomcat verwendet wird. Ich möchte dies deaktivieren und den in meinem Klassenpfad angegebenen verwenden.
Die Fehlermeldung unten.
LoggerFactory ist kein Logback LoggerContext, aber Logback befindet sich im Klassenpfad. Entfernen Sie entweder Logback oder die konkurrierende Implementierung (Klasse org.slf4j.impl.SimpleLoggerFactory). Das Objekt der Klasse [org.slf4j.impl.SimpleLoggerFactory] muss eine Instanz der Klasse ch.qos.logback.classic.LoggerContext sein
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>1.0.1.RELEASE</version>
</parent>
<groupId>com.fe</groupId>
<artifactId>cloudapp</artifactId>
<version>1.0.0</version>
<name>Withinet-PaaS</name>
<description>Develop your web applications in on our infrastructure and we will worry about administration and scalability of your app.</description>
<properties>
<java.version>1.7</java.version>
<guava.version>16.0.1</guava.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.withinet.cloudapp</groupId>
<artifactId>slave</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>6.15.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Hibernate validator -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- Java EE -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Search -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>4.8.0</version>
</dependency>
<!-- Security
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.withinet.cloud.Application</mainClass>
<layout>JAR</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
spring-boot
FOO
quelle
quelle
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
.Um eine bessere, allgemeinere Lösung in Gradle hinzuzufügen (alle Instanzen werden ausgeschlossen):
Von https://docs.gradle.org/current/userguide/dependency_management.html
quelle
spring-boot-starter-logging
Hinzufügen einer Lösung in Gradle.
quelle
Ich fand, dass
spring-boot-starter-logging
es nicht notwendig ist , das gesamte Modul auszuschließen . Sie müssen lediglich dasorg.slf4j:slf4j-log4j12
Modul ausschließen.Durch Hinzufügen dieser Datei zu einer Gradle-Builddatei wird das Problem behoben:
Weitere Informationen finden Sie in dieser anderen StackOverflow- Antwort .
quelle
Ich mag das, um mein Problem zu lösen
quelle
Für gradle,
Sie finden diese Lösung unter: http://www.idanfridman.com/how-to-exclude-libraries-from-dependcies-using-gradle/
Ich muss einfach hinzufügen
exclude
inconfigurations
:quelle
Finden Sie den Spring-Boot-Starter-Test in Ihrer pom.xml und ändern Sie ihn wie folgt:
Es wurde ein Fehler behoben wie:
quelle
Das Folgende funktioniert für mich
quelle
Es kann hilfreich sein, wenn Sie angeben, was Ihr bevorzugter Logger genau ist und was Sie getan haben, um ihn zu installieren. Wie auch immer, Spring Boot versucht, mit allem zu arbeiten, was sich im Klassenpfad befindet. Wenn Sie also keine Rückmeldung wünschen, entfernen Sie es aus dem Klassenpfad. Es gibt Anweisungen für log4j in den Dokumenten , aber das Gleiche gilt für andere unterstützte Protokollierungssysteme (alles, was slf4j, log4j oder Java Util ist).
quelle
Ich habe mein Problem folgendermaßen gelöst:
quelle
Das hat bei mir ganz gut funktioniert
Aber für Maven- Benutzer würde es nicht funktionieren . Alle meine Abhängigkeiten waren in libs.gradle und ich wollte sie nicht in anderen Dateien. Also das war Problem gelöst durch Zugabe von
exclude module : 'spring-boot-starter-logging
inspring-boot-starter-data-jpa
,spring-boot-starter-test
und in praktisch alles mit Boot - Wort.AKTUALISIEREN
Mein neues Projekt brauchte ein Update, es stellte sich heraus, dass
spring-boot-starter-test
1.5 und älter es nicht hattenspring-boot-starter-logging
. 2.0 hat esquelle
In meinem Fall war es nur erforderlich, das
spring-boot-starter-logging
Artefakt von demspring-boot-starter-security
einen auszuschließen .Dies ist in einem neu generierten Spring Boot 2.2.6.RELEASE-Projekt mit den folgenden Abhängigkeiten:
Ich fand es heraus, indem ich rannte
mvn dependency:tree
und suchtech.qos.logback
.Der Frühlingsstiefel, der
<dependencies>
in meinem verwandt ist,pom.xml
sieht so aus:quelle
Fügen Sie dies in Ihr build.gradle ein
quelle
Wenn dieser Fehler in SpringBoot aufgetreten ist, wenn Sie versuchen, log4j2 zu verwenden, führen Sie die folgenden Schritte aus:
Dieser Fehler ist aufgetreten, weil der Logback die log4j2-Änderungen überschreibt. Wenn Sie also log4j2 verwenden möchten, müssen Sie die Logback-Bibliothek und Abhängigkeiten entfernen.
Hoffe das wird jemandem helfen.
quelle
Richtige Methode zum Ausschließen der Standardprotokollierung und Konfigurieren von log4j für die Protokollierung.
Siehe Federprotokollierung - Gewusst wie .
quelle
So fügen Sie einen Ausschluss für die Rückmeldung von der Netbeans-IDE hinzu
Klicken Sie mit der rechten Maustaste auf das Glas und wählen Sie Abhängigkeit ausschließen (siehe unten). Dies schließt das Logback-Jar in der pom.xml wie folgt aus;
quelle
In meinem Fall unten funktioniert der Ausschluss !!
quelle
Das Hinzufügen von Ausschlüssen hat mir nicht gereicht. Ich musste ein falsches Glas zur Verfügung stellen:
quelle
Der Grund dafür ist, dass Spring Boot als Standardprotokollkonfiguration mit Logback geliefert wird, während Camel log4j verwendet. Das ist der Grund für Konflikte. Sie haben zwei Möglichkeiten: Entfernen Sie entweder den Logback vom Spring Boot, wie in den obigen Antworten erwähnt, oder entfernen Sie den log4j vom Kamel.
quelle
Fügen Sie einfach die Konfiguration logback.xml in Ihren Klassenpfad ein und fügen Sie Ihre gesamte Konfiguration mit hinzugefügtem Root-Appender hinzu. Sobald der Spring-Start das Bean-Laden abgeschlossen hat, beginnt die Protokollierung basierend auf Ihrer Konfiguration.
quelle