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

Jos*_*hDM 8 java jboss log4j jaxb 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上.

这个WAR与其他6个唯一独特之处在于该项目使用JAXB; 没有其他WAR使用JAXB.

JAXB和Log4j以及WildFly之间是否存在某种未知的交互,这可能导致这种情况? 我怀疑,但是还不能证明,在使用JAXB的类被ClassLoader加载之后,劫持正在发生.

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

Jos*_*hDM 0

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

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)