为什么WildFly控制台日志劫持了我的WAR的log4j日志?

时间:2018-12-18 21:49:10

标签: java jboss jaxb log4j wildfly

我有7个不同的WAR部署到同一WildFly / JBoss服务器。每个WAR在核心设计和Log4j配置上都是相同的。每个WAR通过其自己的自定义log4j.xml生成自己的日志文件。每个日志都写入一个单独的文件夹。

7个部署的WAR中的

1个不断使日志记录被WildFly的console.log劫持。在初始化期间,它将开始写入自己的日志5-10行,然后停止;其余的日志记录将定向到console.log。

如果在发生这种情况后重新安装WAR,它将同时写入其自己的单独日志和WildFly console.log。如果我重新启动WildFly,它将按照前面所述的方式工作-开始记录到其自己的日志,然后在console.log上继续。

与其他6个相比,该WAR唯一的独特之处是该项目使用JAXB。没有其他WAR使用JAXB。

JAXB与Log4j和WildFly之间是否存在某种未知的交互作用,可能会导致这种情况?我怀疑,但尚不能证明,劫持事件是在Java加载使用JAXB的类之后发生的ClassLoader。

jboss-7.2.0.Final,jdk-7u80x64,Log4j-1.2.13.jar

2 个答案:

答案 0 :(得分:0)

您可能需要尝试将logging.properties文件移动到WAR / WEB-INF / classes。我猜是旧的Jboss EAP 6.4,它可能无法在WAR / WEB-INF目录中查找。

如果这不起作用,则必须为org.jboss.as.logging打开跟踪日志记录,该日志记录应显示在部署中找到logging.properties文件。

以下CLI命令将启用跟踪日志记录,以查看日志记录子系统正在执行的操作的详细信息。

/subsystem=logging/logger=org.jboss.as.logging:add(level=TRACE)

如果要在控制台上查看这些日志消息,则需要为控制台工具启用跟踪日志记录。

/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level, value=TRACE)

资源:

sect-per-deployment_logging

Logging Configuration

答案 1 :(得分:0)

通过通过/WEB-INF/jboss-deployment-structure.xml从应用程序中排除log4j模块来解决

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>