Spring 应用程序在应该使用log4j时使用jboss日志记录

Spring 应用程序在应该使用log4j时使用jboss日志记录,spring,hibernate,log4j,apache-commons-logging,jboss-logging,Spring,Hibernate,Log4j,Apache Commons Logging,Jboss Logging,我正在将SpringMVC应用程序从Spring3.1升级到4.3,并将Hibernate3.6升级到5.2。我将在Wildfly 8中运行此功能。依赖项由Maven管理 Spring使用commons日志记录,它查看应用程序的类路径,并尝试选择合适的日志记录框架。就我而言,它似乎选择了错误的一个。我已经在pom.xml中包含了log4j,通过检查依赖关系层次结构,我可以看到jboss日志不存在。下面是我收到的错误消息: Invocation of init method failed; nes

我正在将SpringMVC应用程序从Spring3.1升级到4.3,并将Hibernate3.6升级到5.2。我将在Wildfly 8中运行此功能。依赖项由Maven管理

Spring使用commons日志记录,它查看应用程序的类路径,并尝试选择合适的日志记录框架。就我而言,它似乎选择了错误的一个。我已经在pom.xml中包含了log4j,通过检查依赖关系层次结构,我可以看到jboss日志不存在。下面是我收到的错误消息:

Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf
因此,尽管我的项目中没有jboss日志记录,但commons日志记录在某处找到它并试图使用它,但没有成功。经过一些搜索,我在Wildfly中找到了jboss-logging-3.1.4.GA.jar

错误的原因是这是jboss日志的旧版本。我向服务器添加了一个较新的jar,并编辑module.xml以指向它,错误消失了。这证明commons日志记录在服务器上查找jboss日志记录

问题是我不想要jboss日志,我想要log4j。如何强制commons日志记录使用log4j并忽略服务器上的内容

编辑:我按照chrisharm提供的链接,将以下行添加到standalone.xml文件中:

<add-logging-api-dependencies value="false"/>
<use-deployment-logging-config value="false"/>
这可能是朝着正确方向迈出的一步,因为现在Spring无法访问jboss日志,但出于某种原因,它仍在尝试使用它

如果您需要/想要包含您的log4j版本,那么您需要执行以下两个步骤

使用add logging api dependencies属性禁用向所有部署添加日志依赖项,并禁用use deployment logging config属性或在jboss-deployment-structure.xml中排除日志子系统。 然后需要在部署中包括一个log4j库。 这仅适用于登录部署。服务器日志将继续使用日志子系统配置

Caused by: java.lang.NoClassDefFoundError: org/jboss/logging/Logger