在 Websphere WebApp 中将 JUL 重定向到 Log4J2
Redirect JUL to Log4J2 in Websphere WebApp
我有一个运行 WebApp 的 WebSphere Application Server。我从 Eclipse 启动服务器。该应用程序中的主要日志记录框架是 log4j2,但也有一些使用 java.util.logging 的第三方库。我想将这些日志重定向到 log4j2,以便它使用我的过滤器、日志格式等。
我已经通过将 java util LogManager
设置为 log4j-jul jar 提供的工具来询问有关此主题的问题 here and . First I tried to use the approach。如第一个链接问题所示,这在我的用例中并不适用。因为该应用程序在 Websphere 服务器中作为 WebApp 运行,所以实际上并没有加载 log4j-jul jar 的时刻,我可以换出 LogManager
,但在对 java 的任何调用之前util Logger
或 LogManager
是因为服务器在加载 jar 和配置我的 Log4J2 设置之前使用这些日志语句。
然后我尝试按照第二个链接问题中的建议使用 Log4jBridgeHandler
。起初我认为这行得通,因为我的测试 java util 日志语句以我当前的 Log4j2 格式打印。
不过我确实有两个问题:我不能使用在 logging.properties
中设置处理程序和级别的方法,因为它根本没有效果(我已经将路径设置为 logging.properties
文件通过 java.util.logging.config.file
系统 属性 在 jvm.options
文件中)。
有用的是使用 Log4jBridgeHandler
的 install()
方法,因为这使得 java util 日志以我的 Log4j2 格式打印。但是我创建的 java 实用程序 Logger
没有 ALL
所需的级别,而是默认的 INFO
,尽管根记录器具有正确的级别。因此,java util 日志记录功能中的默认守卫阻止进入桥接,因此我永远无法记录 INFO
级别以下的任何内容。
所以是的,我疯了。我做错了什么吗?我所做的应该有用吗?
Did I do anything wrong? Should what I've done have worked?
Log4jBridgeHandler 执行从 LOG4J2 到 JUL 的级别传播。尝试在 log4j2.xml 中添加记录器条目以设置命名记录器的级别。
在您的 logging.properties 中,您可以通过以下方式关闭此功能:
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false
我有一个运行 WebApp 的 WebSphere Application Server。我从 Eclipse 启动服务器。该应用程序中的主要日志记录框架是 log4j2,但也有一些使用 java.util.logging 的第三方库。我想将这些日志重定向到 log4j2,以便它使用我的过滤器、日志格式等。
我已经通过将 java util LogManager
设置为 log4j-jul jar 提供的工具来询问有关此主题的问题 here and LogManager
,但在对 java 的任何调用之前util Logger
或 LogManager
是因为服务器在加载 jar 和配置我的 Log4J2 设置之前使用这些日志语句。
然后我尝试按照第二个链接问题中的建议使用 Log4jBridgeHandler
。起初我认为这行得通,因为我的测试 java util 日志语句以我当前的 Log4j2 格式打印。
不过我确实有两个问题:我不能使用在 logging.properties
中设置处理程序和级别的方法,因为它根本没有效果(我已经将路径设置为 logging.properties
文件通过 java.util.logging.config.file
系统 属性 在 jvm.options
文件中)。
有用的是使用 Log4jBridgeHandler
的 install()
方法,因为这使得 java util 日志以我的 Log4j2 格式打印。但是我创建的 java 实用程序 Logger
没有 ALL
所需的级别,而是默认的 INFO
,尽管根记录器具有正确的级别。因此,java util 日志记录功能中的默认守卫阻止进入桥接,因此我永远无法记录 INFO
级别以下的任何内容。
所以是的,我疯了。我做错了什么吗?我所做的应该有用吗?
Did I do anything wrong? Should what I've done have worked?
Log4jBridgeHandler 执行从 LOG4J2 到 JUL 的级别传播。尝试在 log4j2.xml 中添加记录器条目以设置命名记录器的级别。
在您的 logging.properties 中,您可以通过以下方式关闭此功能:
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels=false