【发布时间】:2018-11-04 20:20:43
【问题描述】:
我有一个具有多个 SLF4J 绑定的项目。 我已阅读并尝试过this SO post、this other SO post 中的解决方案 和slf4j website。
如果我在运行代码时看到的是
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/Mike/.m2/repository/org/jlab/coat/coat-libs/5.1-SNAPSHOT/coat-libs-5.1-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/Mike/.m2/repository/org/slf4j/slf4j-log4j12/1.7.16/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
但是在我的 pom.xml 文件中,我已经有了
<dependency>
<groupId>org.jlab.coat</groupId>
<artifactId>coat-libs</artifactId>
<version>5.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
并且在 mvn 依赖项中:tree 我没有看到排除 jar 的此依赖项,仅适用于 Spark jar,即
[INFO] com.IKP:DCdatabase:jar:0.0.1-SNAPSHOT
[INFO] +- org.jlab.coat:coat-libs:jar:5.1-SNAPSHOT:compile
[INFO] +- org.apache.spark:spark-core_2.11:jar:2.2.1:compile
...
...
...
[INFO] | +- org.slf4j:slf4j-api:jar:1.7.16:compile
[INFO] | +- org.slf4j:jul-to-slf4j:jar:1.7.16:compile
[INFO] | +- org.slf4j:jcl-over-slf4j:jar:1.7.16:compile
[INFO] | +- log4j:log4j:jar:1.2.17:compile
[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.16:compile
我还尝试了更多步骤,例如清理我的 .m2 目录,并从头开始构建所有源,但我仍然看到这种双重绑定。
发生的细微差别是 Spark 的日志抑制确实发生了,即
Logger.getLogger("org.apache.spark.SparkContext").setLevel(Level.WARN);
Logger.getLogger("org").setLevel(Level.OFF);
Logger.getLogger("akka").setLevel(Level.OFF);
不再将关卡设置为关闭,我可以看到所有关卡。
还有其他方法可以删除 SLF4J 的多重绑定吗?
【问题讨论】:
标签: apache-spark maven-2 slf4j