Je reçois l'erreur suivante. Il semble qu'il existe de nombreux frameworks de journalisation liés à sl4j. Vous ne savez pas comment résoudre ce problème. Toute aide est grandement appréciée.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Résolu en ajoutant l'exclusion suivante dans les dépendances (de pom.xml) à l'origine du conflit.
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
Version Gradle;
configurations.all {
exclude module: 'slf4j-log4j12'
}
L'erreur donne probablement plus d'informations comme celle-ci (bien que les noms de vos pots puissent être différents)
SLF4J: Liaison trouvée dans [jar: fichier:/D: /Java/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar! /org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Liaison trouvée dans [jar: fichier:/D: /Java/repository/org/Apache/logging/log4j/log4j-slf4j-impl/2.8.2/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Remarquez que le conflit provient de deux jars, nommés logback-classic-1.2.3
et log4j-slf4j-impl-2.8.2.jar
.
Exécutez mvn dependency:tree
dans le dossier parent de ce projet pom.xml en donnant:
Maintenant, choisissez celui que vous voulez ignorer (cela pourrait prendre un effort délicat, j'ai besoin de plus d'aide à ce sujet)
J'ai décidé de ne pas utiliser celui importé de spring-boot-starter-data-jpa
(la dépendance supérieure) via spring-boot-starter
et via spring-boot-starter-logging
, pom devient:
<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-data-jpa</artifactId>
</dependency>
ci-dessus pom spring-boot-starter-data-jpa
utiliserait le spring-boot-starter
configuré dans le même fichier, ce qui exclut logging
(il contient logback
)
Version sbt:
Ajoutez exclude("org.slf4j", "slf4j-log4j12")
à la dépendance qui inclut transitoirement slf4j-log4j12
. Par exemple, lorsque vous utilisez Spark avec Log4j 2.6:
libraryDependencies ++= Seq(
// One SLF4J implementation (log4j-slf4j-impl) is here:
"org.Apache.logging.log4j" % "log4j-api" % "2.6.1",
"org.Apache.logging.log4j" % "log4j-core" % "2.6.1",
"org.Apache.logging.log4j" % "log4j-slf4j-impl" % "2.6.1",
// The other implementation (slf4j-log4j12) would be transitively
// included by Spark. Prevent that with exclude().
"org.Apache.spark" %% "spark-core" % "1.5.1" exclude("org.slf4j", "slf4j-log4j12")
)
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-log4j2</artifactId>-->
<!--</dependency>-->
J'ai résolu par supprimer ceci: spring-boot-starter-log4j2
Utilisez seulement la dépendance requise, pas toutes :))). Pour moi, pour le travail normal du processus de journalisation, vous avez besoin de cette dépendance, exclure les autres de pom.xml.
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.8</version>
</dependency>
... org.codehaus.mojo cobertura-maven-plugin 2.7 tester ch.qos.logback logback-classic outils com.Sun ...
## j'ai corrigé avec ça
... org.codehaus.mojo cobertura-maven-plugin 2.7 tester ch.qos.logback logback-classic outils com.Sun ...
Ceci est dû au fait que la classe StaticLoggerBinder.class appartient à deux fichiers JAR différents. cette classe fait référence à logback-classic-1.2.3.jar et la même classe est également référencée à partir de log4j-slf4j-impl-2.10.0.jar. les deux de jar dans classpath. Il y a donc conflit entre eux. Cela est dû au fait que le fichier journal n'est pas généré, même si le fichier log4j2.xml dans le chemin d'accès aux classes [src/main/resource].
Nous avons donc sélectionner l'un de jar, je vous recommande d'utiliser le fichier log4j-slf4j-impl-2.10.0.jar et d'exclure le fichier logback-classic-1.2.3.jar Solution: ouvrir le fichier pom et afficher la hiérarchie des dépendances [Eclipse] ou exécuter
mvn dependency: commande de l'arbre pour connaître l'arbre de dépendance et la source de dépendance qui télécharge la dépendance. trouver la dépendance en conflit et les exclure. Pour l’application Springboot, essayez 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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
This is working fine for me after struggling a lots.
Pour moi, cela s'est avéré être un problème Eclipse/Maven après le passage de log4j à logback. Examinez votre fichier .classpath
et recherchez la chaîne "log4j"
.
Dans mon cas, j'avais les éléments suivants:
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.7.1/slf4j-log4j12-1.7.1.jar"/>
<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17.jar" />
Supprimer ces entrées du fichier (ou vous pourriez le régénérer) a résolu le problème.
Pour moi, la réponse a été de forcer une reconstruction par Maven. Dans Eclipse: