将JUL重定向到Websphere WebApp中的Log4J2

时间:2019-04-25 15:32:52

标签: java logging log4j2 java.util.logging

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

我已经问过有关此主题herehere的问题。首先,我通过将java util LogManager设置为log4j-jul jar提供的值,尝试使用apache建议的approach。从第一个链接的问题可以看出,这在我的用例中并没有真正起作用。由于该应用程序在Websphere Server中作为WebApp运行,因此实际上并没有加载log4j-jul jar的瞬间,我可以换出LogManager,但是在对Java util {{1之所以做出}}或Logger的原因是,服务器在加载jar并配置我的Log4J2设置之前会使用这些日志语句。

然后,我尝试按照第二个链接问题中的建议使用LogManager。起初,我认为这可行,因为我的测试Java util Log语句以我当前的Log4j2格式打印。

尽管如此,我确实有两个问题:我无法使用在Log4jBridgeHandler中设置处理程序和级别的方式,因为它根本没有任何作用(我将路径设置为{{1 }}文件(通过logging.properties文件中的logging.properties系统属性)。

有用的是使用java.util.logging.config.file的{​​{1}}方法,因为这样使java util日志以我的Log4j2格式打印。但是,尽管root记录程序具有正确的级别,但我创建的Java util jvm.options并没有必需的级别install(),而是默认的Log4jBridgeHandler。因此,java util日志记录功能中的默认防护功能阻止了桥接的输入,因此我永远无法记录Logger级别以下的内容。

是的,我没主意。我做错了吗?我所做的应该有用吗?

1 个答案:

答案 0 :(得分:1)

  

我做错了什么吗?我所做的应该有用吗?

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

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

org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false