【发布时间】:2019-04-25 15:32:52
【问题描述】:
我有一个运行 WebApp 的 WebSphere Application Server。我从 Eclipse 启动服务器。该应用程序中的主要日志记录框架是 log4j2,但也有一些第三方库使用 java.util.logging。我想将这些日志重定向到 log4j2,以便它使用我的过滤器、日志格式等。
我已经就这个话题here 和here 提出了问题。首先,我尝试使用 apache 建议的 approach,方法是将 java util LogManager 设置为 log4j-jul jar 提供的那个。如第一个链接问题所示,这在我的用例中并不适用。因为应用程序在 Websphere Server 中作为 WebApp 运行,所以实际上并没有加载 log4j-jul jar 的时刻,我可以换掉 LogManager,但在调用 java util Logger 或 @ 之前生成 987654327@ 是因为服务器在加载 jar 并配置我的 Log4J2 设置之前使用了这些日志语句。
然后我尝试按照第二个链接问题中的建议使用Log4jBridgeHandler。起初我认为这很有效,因为我的测试 java util Log 语句以我当前的 Log4j2 格式打印。
这种方法确实有两个问题:我不能使用在logging.properties 中设置处理程序和级别的方式,因为它根本没有效果(我已经通过设置logging.properties 文件的路径jvm.options 文件中的 java.util.logging.config.file 系统属性)。
使用Log4jBridgeHandler 的install() 方法有帮助,因为这使得java util 日志以我的Log4j2 格式打印。但是我创建的 java util Logger 没有ALL 所需的级别,而是默认的INFO,尽管根记录器具有正确的级别。因此,java util 日志记录函数中的默认守卫阻止进入桥接,因此我永远无法记录低于INFO 级别的任何内容。
所以是的,我没有主意。我做错什么了吗?我所做的应该有效吗?
【问题讨论】:
标签: java logging log4j2 java.util.logging