gpt4 book ai didi

java - 如果我摆脱我的 'multiple SLF4J Bindings' 警告日志记录停止工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:43 25 4
gpt4 key购买 nike

我在 tomcat 6 中有以下目录结构:

tomcat
|-lib
| |- logback-classic.jar
| |- logback-core.jar
| |- slf4j-api.jar
| |- myState.jar
|-shared
| |-lib
| | |- myStateLogback.xml
|-webapps
| |-myApp
| | |-WEB-INF
| | | |-logback.xml
| | | |-lib
| | | | |-jcl-over-slf4j.jar
| | | | |-logback-classic.jar
| | | | |-logback-core.jar
| | | | |-slf4j-api.jar

myState.jar 需要位于 tomcat/lib 目录中,因为它包含 tomcat 启动时所需的类作为全局资源。它将日志记录写入 slf4j,因此还需要 slf4j 和 logback jar。它使用 JoranConfigurator 加载 myStateLogback.xml。

myApp webapp 将它的日志记录写入 commons-logging,但我希望它通过 slf4j 进行登录以准备将我们所有的日志记录移动到 slf4j,所以我使用 jcl-over-slf4j 桥。

通过上述设置,日志记录全部工作,但我在启动时收到以下警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/tomcat/lib/logback-classic-0.9.29.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/tomcat/webapps/myApp/WEB-INF/lib/logback-classic-0.9.29.jar!/org/slf4j/impl/StaticLoggerBinder.class]

如果我从 webapp 的 lib 目录中取出 logback-classic,我会得到以下异常:

Exception in thread "Timer-30" java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:284)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:252)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)

如果我从 web 应用程序的 lib 目录中删除 2 个 logback jar 和 slf4j-api.jar,我不会收到任何警告和异常,但是来 self 的 web 应用程序的日志会被 myStateLogback.xml 文件拾取并转到它是记录器,我不想要。我知道我可以过滤掉不需要的语句,但我想为 webapp 和 jar 提供单独的配置文件。有办法实现吗?

我正在使用 tomcat 6.0.23、logback 0.9.29 和 slf4j 1.6.3。

谢谢,莎拉

最佳答案

有一章标题为logging separation在 logback 文档中,它提供了一种可能的解决方案。

关于java - 如果我摆脱我的 'multiple SLF4J Bindings' 警告日志记录停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8759706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com