java将JUL重定向到WebSphereWebApp中的Log4J2
我有一个运行WebApp的WebSphere应用服务器。我从Eclipse启动服务器。该应用程序中的主要日志框架是log4j2,但也有一些使用java的第三方库。util。登录中。我想将这些日志重定向到log4j2,以便它使用我的过滤器、日志格式等
我已经就这个话题here和here提出了问题。首先,我尝试使用apache建议的approach,将java util LogManager
设置为log4j jul jar提供的。正如在第一个链接问题中所看到的,这在我的用例中并不起作用。由于应用程序在Websphere服务器中以WebApp的形式运行,因此实际上并不存在加载log4j jul jar的时刻,我可以交换掉LogManager
,但是在调用java util Logger
或LogManager
之前,因为服务器在加载jar和配置我的Log4J2设置之前使用这些日志语句
然后,我尝试使用第二个链接问题中建议的Log4jBridgeHandler
。起初我认为这是可行的,因为我的测试java util日志语句是用currect Log4j2格式打印的
不过,这种方法确实有两个问题:我不能使用在logging.properties
中设置处理程序和级别的方法,因为它根本没有效果(我通过jvm.options
文件中的java.util.logging.config.file
系统属性设置了logging.properties
文件的路径)
帮助的是使用Log4jBridgeHandler
的install()
方法,因为这样就可以以我的Log4j2格式打印java util日志。但是我创建的java util Logger
没有所需的ALL
级别,而是默认的INFO
,尽管根记录器具有正确的级别。正因为如此,java util日志函数中的默认保护阻止了桥的进入,因此我永远无法记录低于INFO
级别的任何内容
所以,是的,我没有idead了。我做错什么了吗?我所做的应该奏效吗
# 1 楼答案
Log4jBridgeHandler从LOG4J2到JUL进行级别传播。请尝试在LOG4J2中添加一个记录器条目。xml来设置命名记录器的级别
在你的日志中。属性您可以通过以下方式关闭此功能: