Désactiver le Logback dans SpringBoot
il semble que Springboot autoconfigure lui-même d'utiliser Logback avec Tomcat. Je voudrais désactiver ceci et utiliser celui que je fournis dans mon cours.
le message d'erreur ci-dessous.
LoggerFactory n'est pas un LoggerContext mais le Logback est classpath. Soit supprimer Logback ou la mise en œuvre concurrente (classe org.slf4j.impl.SimpleLoggerFactory) objet de la classe [org.slf4j.impl.SimpleLoggerFactory] doit être instance de la classe ch.la qualité de service.logback.classique.LoggerContext
<?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>
13 réponses
ajoute l'exclusion à la fois au démarreur à ressort et au web pour résoudre le conflit.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
pour ajouter une solution meilleure et plus générique dans Gradle (toutes les instances seront exclues):
configurations {
all*.exclude module : 'spring-boot-starter-logging'
}
de https://docs.gradle.org/current/userguide/dependency_management.html
pour ajouter une solution dans gradle.
dependencies {
compile ('org.springframework.boot:spring-boot-starter') {
exclude module : 'spring-boot-starter-logging'
}
compile ('org.springframework.boot:spring-boot-starter-web') {
exclude module : 'spring-boot-starter-logging'
}
}
je n'aime pas ce à résoudre mon problème
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
pour gradle,
vous pouvez voir cette solution à: http://www.idanfridman.com/how-to-exclude-libraries-from-dependcies-using-gradle /
il suffit d'ajouter exclude
dans configurations
:
configurations {
providedRuntime
compile.exclude(group: 'ch.qos.logback')
}
j'ai constaté qu'il n'était pas nécessaire d'exclure le module complet spring-boot-starter-logging
. Il suffit d'exclure le module org.slf4j:slf4j-log4j12
.
ajouter ceci à un fichier de construction Gradle résoudra le problème:
configurations {
runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
compile.exclude group: "org.slf4j", module: "slf4j-log4j12"
}
voir cet autre débordement de piles réponse pour plus de détails.
Cela pourrait aider si vous dites que vous préférez enregistreur est exactement, et ce que vous avez fait pour essayer de l'installer. Quoi qu'il en soit, Spring Boot essaie de fonctionner avec ce qui est dans le chemin de la classe, donc si vous ne voulez pas de logback, retirez-le du chemin de la classe. Il y a des instructions pour log4j dans les docs , mais la même chose s'appliquerait à d'autres systèmes de journalisation supportés (tout slf4j, log4j ou util java).
Trouver printemps-amorçage-starter-test dans votre pom.xml et le modifier comme suit:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
il fixe l'erreur comme:
causé par: java.lang.IllegalArgumentException: LoggerFactory n'est pas un Logback LoggerContext mais Logback est sur le chemin de la classe.
soit supprimer Logback ou la concurrence la mise en œuvre
( de la classe org.Apache.journalisation.slf4j.Log4jLoggerFactory chargé à partir du fichier: ${M2_HOME}/repository/org/apache/log/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar ).
si vous utilisez WebLogic vous devez ajouter 'org.slf4j' préférez-application-paquets dans WEB-INF/weblogic.xml: org.Apache.journalisation.slf4j.Log4jLoggerFactory
ajoutez ceci dans votre construction.Grad
configurations.all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
exclude group: 'org.springframework.boot', module: 'logback-classic'
}
j'ai résolu mon problème par ce qui suit:
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0'){
exclude module: 'log4j-slf4j-impl'
exclude module: 'logback-classic'
}
compile('org.springframework.boot:spring-boot-starter-web'){
exclude module: 'log4j-slf4j-impl'
exclude module: 'logback-classic'
}
Cela a fonctionné pour moi très bien
configurations {
all*.exclude module : 'spring-boot-starter-logging'
}
mais ça ne marcherait pas pour les utilisateurs maven . Toutes mes dépendances étaient en libs.gradle et moi ne les voulions pas dans d'autres dossiers. Ainsi ce problème a été résolu en ajoutant exclude module : 'spring-boot-starter-logging'
dans spring-boot-starter-data-jpa
, spring-boot-starter-test
et dans pratiquement tout avec mot de botte.
il suffit d'ajouter logback.configuration xml dans votre classpath et ajoutez toute votre configuration avec l'application root ajoutée. Une fois que la botte de printemps aura terminé le chargement des fèves, elle commencera la journalisation en fonction de votre configuration.
travaux suivants pour moi
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>