代码之家  ›  专栏  ›  技术社区  ›  JoshDM

为什么Wildfly控制台日志劫持了我的战争日志4J?

  •  8
  • JoshDM  · 技术社区  · 7 年前

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

    部署的7场战争中,有1场不断遭到WildFly的console.log的劫持。在初始化期间,它将开始写入自己的日志5-10行,然后停止;其余的日志将被定向到console.log。

    如果在这种情况发生后重新安装war,它将写入自己的单独日志和wildfly console.log。如果我重新启动WildFly,它的行为将如前所述-开始记录到自己的日志,然后在console.log上继续。

    这场战争与其他6场战争唯一不同的是,这个项目使用JAXB;其他战争都不使用JAXB。

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

    jboss-7.2.0.最终版,jdk-7u80x64,log4j-1.2.13.jar

    2 回复  |  直到 7 年前
        1
  •  0
  •   Dilanka M    7 年前

    您可能需要尝试将logging.properties文件移到war/web-inf/classes。我猜旧的JBossEAP6.4,可能有一个bug,它无法在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

        2
  •  0
  •   JoshDM    7 年前

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

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