多个SLF4J绑定

时间:2015-11-10 22:01:16

标签: java log4j slf4j

我的classpath中有两个jar文件,它们与slf4j有依赖关系。这会在我的Java程序中引发警告消息:

 SLF4J: Class path contains multiple SLF4J bindings.
 SLF4J: Found binding in  [jar:file:/usr/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
 SLF4J: Found binding in [jar:file:/usr/lib/myprogram.jar!/org/slf4j/impl/StaticLoggerBinder.class]
 SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
 SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

有没有办法通过仅更改gradle文件来删除此警告消息,而不从类路径中删除任何上述jar文件?

由于

1 个答案:

答案 0 :(得分:2)

  

有没有办法通过仅更改gradle文件来删除此警告消息,而不从类路径中删除任何上述jar文件?

没有

删除该警告的唯一方法是只为SLF4J提供一个绑定。 And you really should do so:

  

即使存在多个绑定,SLF4J也会选择一个日志框架/实现并与之绑定。 SLF4J选择绑定的方式由JVM决定,出于所有实际目的,应视为随机。

由于您在自己的jar中提供了绑定,因此将自己限制为单个绑定的最简单方法是排除slf4j-log4j12-1.7.6.jar。