JBOSS中的多个SLF4J绑定出现了ERROR

时间:2011-07-08 07:26:50

标签: java binding jboss slf4j

我们的应用程序将多个EAR部署到单个JBOSS-AS。

每个EAR都使用SLF4J进行日志记录,并且可以在WAR的lib中使用。我们还有一个案例,我们也将单独部署EAR。

以下是我们为单个EAR获得的部署ERROR。我们为每个EAR获得了类似的ERROR。

2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Class path contains multiple SLF4J bindings.
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/jboss-as/common/lib/lib/slf4j-jboss-logging.jar/org/slf4j/impl/StaticLoggerBinder.class]
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/Product_Ear.ear/Product_War.war/WEB-INF/lib/slf4j-jcl-1.5.8.jar/org/slf4j/impl/StaticLoggerBinder.class]
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

此错误是因为我们根据说明URL有多个SLF4j绑定。

问题:

  
      
  1. 不应该是警告而不是警告   错误?

  2.   
  3. 有没有办法在没有的情况下运行它   错误,没有删除   来自WARs的slf4j-jcl-1.5.8.jar?

  4.   

SideNote: 即使我们在大多数EAR中出现错误,也没有其他问题。 每个缩进的功能都正常工作。

1 个答案:

答案 0 :(得分:3)

slf4j的这种行为是设计的。如果你不喜欢它,你必须在slf4j网站上提出错误报告。

问题是JBoss在其默认的类加载器中提供了一个slf4j绑定,并且你带来了自己的。我对JBoss不太熟悉,不知道默认情况下是否可以使用common / lib中的slf4j jar,或者如果你把它放在那里,但是在那个位置你可能无法禁用它。您可能想在jboss网站上提出错误报告。

问题源于我不相信它已经在servlet规范中明确说明了web容器类加载器应该提供什么以及它不应该提供什么。因此会出现部署问题。

唯一的解决方法是删除自己的slf4j绑定并登录jboss记录器。

但请注意,如果您让Web容器执行日志记录,它将是您的最佳跨平台,因为您无法保证按规范访问文件系统。