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>
73
demandé sur tharindu_DG 2014-06-02 00:10:47

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>
84
répondu F.O.O 2015-04-22 01:17:39

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

41
répondu HankCa 2015-06-08 10:31:15

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'
    }
}
31
répondu Amer A. 2015-03-24 17:26:16

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>
7
répondu JiaweiQin 2017-06-26 14:04:39

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')
}
7
répondu Su Cheung 2017-08-31 03:48:35

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.

5
répondu Andrew 2017-05-23 12:26:38

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).

4
répondu Dave Syer 2014-06-01 20:52:43

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

4
répondu askme 2017-12-30 01:09:02

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'
}
3
répondu Quy Tang 2016-06-13 06:32:23

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'
}
3
répondu Leo 2017-06-27 11:25:53

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.

1
répondu Dennis Glot 2018-09-28 17:04:48

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.

0
répondu Sakthivel thangasamy 2017-04-23 01:31:12

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>
0
répondu Harsimranjit Singh Kler 2018-08-30 13:05:59