我有一个运行WebApp的WebSphere Application Server。我从Eclipse启动Server。该应用程序中的主要日志框架是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
或LogManager
之前,因为服务器在加载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
级别以下的任何内容。
所以是的,我没有想法。我做错了什么吗?我所做的一切都有用吗?
我做错了什么吗?我所做的一切都有用吗?
Log4jBridgeHandler进行从LOG4J2到JUL的电平传播。尝试在log4j2.xml中添加记录器条目以设置指定记录器的级别。
在您的logging.properties中,您可以通过以下方式将其关闭:
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false