无法将Log4J2与Wildfly一起使用

问题描述 投票:0回答:1

我正在使用使用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>
logging wildfly log4j2 jboss-modules
1个回答
0
投票

org.jboss.log4j2.logmanager module.xml中,不需要该<provides/>定义。除此之外,您的module.xml文件看起来正确。

接下来,您需要在部署中同时定义org.jboss.log4j2.logmanagerorg.apache.log4j2模块。如果您使用的是jboss-deployment-structure.xml,那么WAR的外观将类似于以下内容:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.apache.log4j2"/>
            <module name="org.jboss.log4j2.logmanager" export="true"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

[一个小注释是那些可能应该直接位于modules目录下,而不是modules/system/layers/base目录下。尽管它并没有破坏服务器所提供模块的真正含义。

© www.soinside.com 2019 - 2024. All rights reserved.