我有一个运行 Web 应用程序的 WebSphere 应用程序服务器。我从 Eclipse 启动服务器。该应用程序中的主要日志记录框架是 log4j2,但也有一些使用 java.util.logging 的第三方库。我想将这些日志重定向到 log4j2,以便它使用我的过滤器、日志格式等。为了实现这一点,我可以使用Log4j JDK 日志适配器.
通常我们会设置系统属性-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
,例如在 jvm.options 中。问题是我似乎无法使该解决方案起作用,因为服务器在加载我的 log4j2 属性之前和之前就使用了 java util 日志记录log4j-jul
适配器的 jar 已加载。这会导致尝试启动服务器后立即抛出异常(请参阅我的其他问题).
所以我想也许可以设置LogManager
到一个来自log4j-jul
jar 稍后在启动过程中,当 jar 和我的 log4j2 属性加载时?
一旦java.util.logging.LogManager加载后(第 174 行附近)它会分配单例实例。触发加载后没有办法替换。
安装org.apache.logging.log4j.jul.Log4jBridgeHandler应该可以解决问题。您应该能够使用默认 LogManager 将该处理程序添加到根记录器WebSphere.
通常这可以通过将以下内容添加到您的logging.properties中来完成:
.handlers=org.apache.logging.log4j.jul.Log4jBridgeHandler
.level.INFO
org.apache.logging.log4j.jul.Log4jBridgeHandler.level=ALL
Per LOG4J2-2025这在 LOG4J2 版本 3.0.0 中已修复。截至 2021 年 10 月 23 日,此问题似乎已向后移植LOG4J2-2025 jul-log4j 桥处理程序进入2.15.0。对于 LOG4J2 2.3,您可以使用log4j2-Java6-extras or 从 Maven 下载 log4j2-Java6-extras.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)