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

标签 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 相比,这个 WAR 的唯一独特之处在于该项目使用 JAXB;其他 WAR 均未使用 JAXB。

JAXB 与 Log4j 和 WildFly 之间是否存在某种未知的交互可能会导致此问题?我怀疑,但还不能证明,劫持是在使用 JAXB 的类被加载后发生的类加载器。

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

最佳答案

您可能需要尝试将 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

关于java - 为什么 WildFly 控制台日志会劫持我的 WAR 的 log4j 日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841594/

相关文章:

java - jaxb:将属性绑定(bind)到元素

java - JAXB boolean 值 TRUE/FALSE 大写返回 null

java - AWT Canvas 在手动调整大小时闪烁

java - 带条件的 XML 到 JSON 转换

java - @Context 注入(inject)在 Je​​rsey ContainerRequestFilter (Dropwizard) 中不起作用

java - JBoss 7 应用程序,从 ui 启动/停止?

java.lang.异常 : No Certificate file specified or invalid file format

java - BeanComparator 生成 NoClassDefFoundError

java - weblogic 10.3 上的 ClassCastException jboss-seam

java - 使用 JAXB 时如何避免 Android 上的 StAX API 错误?