Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将JUL重定向到WebSphereWebApp中的Log4J2

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

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

然后,我尝试使用第二个链接问题中建议的Log4jBridgeHandler。起初我认为这是可行的,因为我的测试java util日志语句是用currect Log4j2格式打印的

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

帮助的是使用Log4jBridgeHandlerinstall()方法,因为这样就可以以我的Log4j2格式打印java util日志。但是我创建的java util Logger没有所需的ALL级别,而是默认的INFO,尽管根记录器具有正确的级别。正因为如此,java util日志函数中的默认保护阻止了桥的进入,因此我永远无法记录低于INFO级别的任何内容

所以,是的,我没有idead了。我做错什么了吗?我所做的应该奏效吗


共 (1) 个答案

  1. # 1 楼答案

    Did I do anything wrong? Should what I've done have worked?

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

    在你的日志中。属性您可以通过以下方式关闭此功能:

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