Comment exclure plusieurs liaisons SLF4J à LOG4J
J'obtiens l'erreur
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/george/.gradle/caches/artifacts-26/filestore/org.apache.logging.log4j/log4j-slf4j-impl/2.0-beta8/jar/15984318e95b9b0394e979e413a4a14f322401c1/log4j-slf4j-impl-2.0-beta8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/george/.gradle/caches/artifacts-26/filestore/org.slf4j/slf4j-log4j12/1.5.0/jar/aad1074d37a63f19fafedd272dc7830f0f41a977/slf4j-log4j12-1.5.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Dans mon construire.gradle fichier, j'ai la ligne suivante pour inclure le pot log4j-slf4j-impl-2.0-beta8.jar (qui je veux lier à LOG4J2)
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.0-beta8'
Dans un autre build.gradle fichier dans un projet dépendant, j'ai plusieurs lignes semblable à la suivante:
compile 'dcm4che:dcm4che-core:2.0.23'
Maintenant dcm4che comprend une dépendance sur log4j version 1 (slf4j-log4j12) et c'est, par conséquent, être inclus dans le projet global.
Ici est un extrait de l'Gradle de l'arbre des dépendances:
| +--- dcm4che:dcm4che-core:2.0.23
| | \--- org.slf4j:slf4j-log4j12:1.5.0
| | +--- org.slf4j:slf4j-api:1.5.0 -> 1.7.5
| | \--- log4j:log4j:1.2.13 -> 1.2.14
J'ai lu le lien suggéré dans l'avertissement mais je ne peut pas comprendre comment faire pour que mon application se lier à log4j2 utilisez le pot que je veux.
Le Gradle de la documentation sur la gestion de la dépendance n'a pas vraiment fait plus clair.
source d'informationauteur giorgio
Vous devez vous connecter pour publier un commentaire.
La solution est d'ajouter le texte suivant dans la construction.gradle.
Le résultat est que tout ce qui nécessite normalement log4j va utiliser log4j-sur-slf4j à la place.
J'ai également ajouté:
pour l'exhaustivité de la couverture commons logging.
Mettez ce code dans votre
build.gradle
fichierExclure la dépendance qui en contiennent le slf4j .jar, vous ne pas souhaitez utiliser. Pour gradle cette peut aider à le faire.
mise à jour:
Malheureusement, je ne suis pas familier avec gradle, mais à en juger par la lié documentation sth. comme
peut fonctionner? Notez que la documentation mentionne une sorte de "configuration globale" liste d'exclusion, qui peut être une meilleure façon de le faire, mais je n'ai pas réussi à trouver plus d'informations sur que.