【发布时间】:2020-05-19 10:06:26
【问题描述】:
我正在开发一个使用 log4j2 进行日志记录的 JEE 应用程序。我正在尝试在 Wildfly 15 上部署它,但我无法正确记录它,说明
Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
这就是我所做的:
- 我已使用简单的 module.xml 将 log4j2-api.jar 作为系统模块添加到 Wildfly (system/layers/base/org/apache/log4j2/main)。
- 我从https://github.com/jboss-logging/log4j2-jboss-logmanager 获取代码,构建了一个 JAR,并将其作为系统模块添加到 Wildfly (system/layers/base/org/jboss/log4j2/logmanager/main),带有一个 module.xml定义提供的服务:
<provides>
<service name="org.apache.logging.log4j.spi.Provider">
<with-class name="org.jboss.logmanager.log4j.JBossProvider" />
</service>
</provides>
- 我已将 org.apache.log4j2 和 org.jboss.log4j2.logmanager 作为依赖项添加到 org.jboss.logmanager 模块,并在后者上声明
services="export"。
我知道https://issues.redhat.com/browse/WFCORE-482,但我似乎无法从中得出正确的结论。
谁能帮助或知道如何进一步诊断这里发生了什么?
为了完整参考,org.jboss.log4j2.logmanager 的 module.xml 如下所示:
<module xmlns="urn:jboss:module:1.8" name="org.jboss.log4j2.logmanager">
<resources>
<resource-root path="log4j2-jboss-logmanager.jar"/>
</resources>
<dependencies>
<module name="org.apache.log4j2"/>
<module name="org.jboss.logmanager"/>
</dependencies>
<provides>
<service name="org.apache.logging.log4j.spi.Provider">
<with-class name="org.jboss.logmanager.log4j.JBossProvider" />
</service>
</provides>
</module>
...尽管我尝试将 org.jboss.logmanager 引用为 org.jboss.log4j2.logmanager 的依赖项,反之亦然。
org.apache.log4j2 的 module.xml 如下所示:
<module xmlns="urn:jboss:module:1.1" name="org.apache.log4j2">
<resources>
<resource-root path="log4j-api.jar"/>
</resources>
</module>
【问题讨论】:
-
您的
module.xml文件是什么样的?它们应该类似于 github.com/jamezp/wildfly-core/commit/… 和 github.com/jamezp/wildfly-core/commit/…。 -
为什么 org.jboss.log4j2.logmanager 模块依赖于 org.jboss.logmanager,而不是相反?从哪里引用 org.jboss.log4j2.logmanager 模块?这似乎是我不明白的部分。
-
在上面添加了两个module.xml,并根据logmanager尝试了log4j2.logmanager,反之亦然,结果相同。
-
因为
org.jboss.log4j2.logmanager需要org.jboss.logmanager而不是相反。
标签: logging wildfly log4j2 jboss-modules