我已经在maven项目中使用slf和jcl在slf上设置了logback。我还删除了对公共(public)日志记录的所有依赖项。日志系统按预期工作,除了 jboss 上的 org.apache.http.wire http 客户端,但它在 tomcat 上工作正常。
我的 Maven 的 fragment 是: org.apache.httpcomponents http客户端 4.5 公共(public)日志记录 公共(public)日志记录
<!--Logging-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
编辑:我还添加了 jboss-deployment-struct
<deployment>
<exclude-subsystems>
<subsystem name="jpa"/>
</exclude-subsystems>
<exclusions>
<module name="javaee.api"/>
<module name="org.apache.commons.logging"/>
<module name="org.slf4j"/>
<module name="org.slf4j.impl"/>
<module name="org.slf4j.ext"/>
<module name="org.slf4j.jcl-over-slf4j"/>
<module name="org.apache.log4j"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
</exclusions>
</deployment>
可能的解决方案是使 commons-logging 与 logback 并行工作并使用另一个文件。
我们的jboss版本是: 红帽 JBoss 企业应用平台 - 版本 6.4.3.GA
最佳答案
解决方案取决于 Jboss 版本,并且可能更复杂。假设 7xx 版本 org.apache.commons.logging 模块是隐式依赖项,并且默认加载。 更多详细信息请参见此处: https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments
如果你想排除这个模块,你必须创建 jboss-deployment-struct.xml 文件(未测试示例):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.commons.logging" />
</exclusions>
</deployment>
</jboss-deployment-structure>
您可以在以下位置找到更多信息: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7
关于java - 来自 apache commons 的 httpclient 不适用于 jboss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569228/