在Websphere WebApp中将JUL重定向到Log4J2

问题描述 投票:0回答:1

我有一个运行WebApp的WebSphere Application Server。我从Eclipse启动Server。该应用程序中的主要日志框架是log4j2,但是有一些第三方库使用java.util.logging。我想将这些日志重定向到log4j2,因此它使用我的过滤器,日志格式等。

我已经就herehere这个话题提出了问题。首先,我尝试使用apache建议的approach,将java util LogManager设置为log4j-jul jar提供的。如第一个链接问题所示,这在我的用例中并不真正起作用。因为应用程序在Websphere Server中作为WebApp运行,所以实际上并没有加载log4j-jul jar的时刻,我可以换掉LogManager,但在调用java util LoggerLogManager之前,因为服务器在加载jar并配置我的Log4J2设置之前使用这些日志语句。

然后,我尝试使用第二个链接问题中建议的Log4jBridgeHandler。起初我认为这很有效,因为我的测试java util Log语句以我当前的Log4j2格式打印。

我对这种方法有两个问题:我不能在logging.properties中使用设置处理程序和级别的方式,因为它根本没有效果(我已经通过logging.properties中的java.util.logging.config.file系统属性设置了jvm.options文件的路径文件)。

有什么帮助使用install()Log4jBridgeHandler方法,因为这使得java util日志以我的Log4j2格式打印。但是我创建的java util Logger没有所需的ALL级别,而是默认的INFO,尽管root logger具有正确的级别。因此,java util日志功能中的默认保护功能阻止了输入桥接,因此我永远不能记录INFO级别以下的任何内容。

所以是的,我没有想法。我做错了什么吗?我所做的一切都有用吗?

java logging log4j2 java.util.logging
1个回答
1
投票

我做错了什么吗?我所做的一切都有用吗?

Log4jBridgeHandler进行从LOG4J2到JUL的电平传播。尝试在log4j2.xml中添加记录器条目以设置指定记录器的级别。

在您的logging.properties中,您可以通过以下方式将其关闭:

org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false
© www.soinside.com 2019 - 2024. All rights reserved.