web-dev-qa-db-fra.com

Désactiver la consignation au démarrage du printemps

Il semble que Springboot se configure automatiquement pour utiliser Logback avec Tomcat. Je voudrais désactiver ceci et utiliser celui que je fournis dans mon classpath.

Le message d'erreur ci-dessous.

LoggerFactory n'est pas un Logback LoggerContext mais Logback est sur le chemin de classe. Supprimez Logback ou l'implémentation concurrente (classe org.slf4j.impl.SimpleLoggerFactory). L'objet de la classe [org.slf4j.impl.SimpleLoggerFactory] doit être une instance de la classe ch.qos.logback.classic.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>
94
F.O.O

Ajoutez une exclusion à la fois au printemps-démarrage-démarreur et au printemps-démarrage-démarreur-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>
116
F.O.O

Pour ajouter une meilleure solution 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

47
HankCa

Ajouter une solution en dégradé.

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'
    }
}
36
Amer A.

J'aime ça pour 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>
10
JiaweiQin

J'ai trouvé que l'exclusion du module complet spring-boot-starter-logging n'est pas nécessaire. 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 StackOverflow réponse pour plus de détails.

8
Andrew

Pour le grade,

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
Su Cheung

Suivre 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>
5

Recherchez spring-boot-starter-test dans votre fichier pom.xml et modifiez-le 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 a corrigé une erreur comme:

_Caused by: Java.lang.IllegalArgumentException:_ **LoggerFactory** is not a **Logback LoggerContext** but *Logback* is on the classpath.

Either remove **Logback** or the competing implementation

(_class org.Apache.logging.slf4j.Log4jLoggerFactory_
loaded from file: 

**${M2_HOME}/repository/org/Apache/logging/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar**).

If you are using WebLogic you will need to add **'org.slf4j'** to prefer-application-packages in WEB-INF/weblogic.xml: **org.Apache.logging.slf4j.Log4jLoggerFactory**
5
askme

J'ai résolu mon problème par ceci ci-dessous:

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'
}
4
Leo

Cela a bien fonctionné pour moi

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

Mais cela ne fonctionnerait pas pour maven utilisateurs. Toutes mes dépendances étaient dans libs.gradle et je ne les voulais pas dans d'autres fichiers. Donc ceci le problème a été résol en ajoutant exclude module : 'spring-boot-starter-logging dans spring-boot-starter-data-jpa, spring-boot-starter-test et dans pratiquement tout avec boot Word.

UPDATE

Mon nouveau projet nécessitait une mise à jour, spring-boot-starter-test 1.5 et plus ancien n’avait pas spring-boot-starter-logging. 2.0 l'a

3
Dennis Glot

Ajoutez ceci dans votre build.gradle

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
Quy Tang

Cela pourrait être utile si vous dites exactement quel est votre enregistreur préféré et ce que vous avez fait pour essayer de l’installer. Quoi qu'il en soit, Spring Boot essaie de travailler avec tout ce qui se trouve dans le chemin de classe. Par conséquent, si vous ne voulez pas vous connecter, supprimez-le du chemin de classe. Il existe des instructions pour log4j dans la documentation , mais la même chose s’appliquerait à d’autres systèmes de journalisation pris en charge (tout ce que slf4j, log4j ou Java util).

3
Dave Syer

Si cette erreur s'est produite dans SpringBoot lorsque vous essayez d'utiliser log4j2, procédez comme suit:

  • Supprimez le fichier jar de lors de la création du package en ajoutant ceci "excludeGroupIds log4j-slf4j-impl/excludeGroupIds"
  • Découvrez quelle bibliothèque dépend de "logback-classic" en utilisant la commande "mvn dependecy: tree"
  • Où que vous le trouviez, excluez-le de la dépendance.

Cette erreur est survenue car logback annule les modifications log4j2. SO si vous souhaitez utiliser log4j2, vous devez supprimer la bibliothèque de retour en journal et les dépendances.

J'espère que cela aidera quelqu'un.

1
Atul

Pour ajouter une exclusion pour la journalisation à partir de l'EDI Netbeans

  1. Accédez à la section> Explorateur de projets de votre projet.
  2. Passez à> Dépendances comme indiqué ci-dessous
  3. Trace 'spring-boot-starter-logging-X.X.X.jar'
  4. Faites un clic droit sur le pot et sélectionnez Exclure la dépendance comme indiqué ci-dessous. Cela exclut le fichier journal sur le pom.xml comme ceci;

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

enter image description here

0
Dun0523

Méthode correcte pour exclure la journalisation par défaut et configurer log4j pour la journalisation.

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

Reportez-vous à journalisation du printemps - Comment .

0
TechFree

Ajoutez simplement la configuration logback.xml dans votre chemin de classe et ajoutez toute votre configuration avec l’appender root ajouté. Une fois que le démarrage de Spring a terminé le chargement du bean, il commence la journalisation en fonction de votre configuration.

0