slf4j警告有关相同的绑定是重复的

时间:2011-06-20 22:08:25

标签: java logging weblogic slf4j

SLF4J抱怨多个绑定,但看起来完全一样:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [zip:C:/bea_domains/my_service_domain/servers/AdminServer/tmp/_WL_user/my-shared-app-lib/obaz3z/APP-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [zip:C:/bea_domains/my_service_domain/servers/AdminServer/tmp/_WL_user/my-shared-app-lib/obaz3z/APP-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

有没有办法摆脱这种警告?可能是什么原因?

3 个答案:

答案 0 :(得分:5)

目前正在进行bug 138讨论,这与我报告的问题完全相同。根据讨论,“问题实际上是在清单中的多个类路径中 - 如果有超过EJB jar的绑定列表WLS提供了完整的列表。即使类是相同的。这与ClassLoader一起使用WLS中的行为。“如果你想真正删除这个警告(虽然不是致命的),bug中有一个附件,你可以用它修补slf4j。

答案 1 :(得分:4)

现在修复了slf4j 1.6.2中的错误138 :-)。 http://www.slf4j.org/news.html

答案 2 :(得分:0)

除了Jasonw的答案中描述的多个类路径问题之外,这个问题也可能是由模拟框架PowerMock引起的。

PowerMock使用自己的类加载器(MockClassLoader),它使用自己的机制委托父类加载器。这也可能导致ClassLoader.getResources()两次返回相同的资源,从而触发警告。

这似乎是由PowerMock issue 380中描述的更改引起的。

SLF4J中的#138(上面链接)的修复也解决了这个问题,所以对于SLF4J 1.6.2+它应该不再发生。