我有一个运行WebApp的WebSphere Application Server。我从Eclipse启动服务器。该应用程序中的主要日志记录框架是log4j2,但是有一些使用java.util.logging的第三方库。我想将这些日志重定向到log4j2,以便它使用我的过滤器,日志格式等。
我已经问过有关此主题here和here的问题。首先,我通过将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
级别以下的内容。
是的,我没主意。我做错了吗?我所做的应该有用吗?
答案 0 :(得分:1)
我做错了什么吗?我所做的应该有用吗?
Log4jBridgeHandler进行从LOG4J2到JUL的级别传播。尝试在log4j2.xml中添加记录器条目以设置命名记录器的级别。
在您的logging.properties中,您可以通过以下方式将其关闭:
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false