【发布时间】:2019-05-19 09:02:17
【问题描述】:
我有 7 个不同的 WAR 部署到同一个 WildFly / JBoss 服务器。每个 WAR 在核心设计和 Log4j 配置上都是相同的。每个 WAR 通过自己的自定义 log4j.xml 生成自己的日志文件。每个日志都写入一个单独的文件夹。
7 个已部署的 WAR 中有 1 个不断被 WildFly 的 console.log 劫持日志记录。它将在初始化期间开始写入自己的日志 5-10 行,然后停止;其余的日志记录将被定向到 console.log。
如果我在发生这种情况后重新安装 WAR,它将同时写入自己的个人日志和 WildFly 控制台日志。如果我重新启动 WildFly,它的行为将如前所述 - 开始记录到它自己的日志,然后在 console.log 上继续。
与其他 6 个 WAR 相比,这个 WAR 唯一的独特之处在于这个项目使用 JAXB;其他 WAR 都没有使用 JAXB。
JAXB 与 Log4j 和 WildFly 之间是否存在某种未知的交互可能会导致这种情况?我怀疑,但还不能证明,劫持发生在使用 JAXB 的类被加载之后类加载器。
jboss-7.2.0.Final,jdk-7u80x64,Log4j-1.2.13.jar
【问题讨论】:
-
不是 100%,但有时 Jboss/wildfly 使用自己的 jar,而不是内置在 wars/ears 中的 jar,因此您可能需要将排除项放入 Jboss 部署描述符 xml。
-
@achAmháin 其他不受此影响的 WAR 也使用相同的 Log4j jar;为什么这个单一的战争特别?
-
我不确定。也许只是尝试在部署描述符中排除 JBoss 自己的 JAXB 模块(假设有一些),看看它是否有任何影响。我在 EAP 7 中遇到了 log4j 问题,最终将它们排除在外,并在每个自己的 war 文件中使用日志记录。
-
您是使用
jboss-deployment-structure.xml排除日志子系统还是org.apache.log4j模块? -
@JamesR.Perkins 不,我不是。这是这类问题的潜在原因,还是我应该采用的治疗方法?我怀疑你在寻找原因。
标签: java jboss jaxb log4j wildfly