Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Log4j JDK日志适配器:在启动过程的后期应用LogManager系统属性_Logging_Websphere_Log4j2_Websphere Liberty_Java.util.logging - Fatal编程技术网

Logging Log4j JDK日志适配器:在启动过程的后期应用LogManager系统属性

Logging Log4j JDK日志适配器:在启动过程的后期应用LogManager系统属性,logging,websphere,log4j2,websphere-liberty,java.util.logging,Logging,Websphere,Log4j2,Websphere Liberty,Java.util.logging,我有一个运行WebApp的websphereapplicationserver。我从Eclipse启动服务器。该应用程序中的主要日志框架是log4j2,但是有些第三方库使用java.util.logging。我想将这些日志重定向到log4j2,以便它使用我的过滤器、日志格式等。为了实现这一点,我可以使用 通常会设置系统属性-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager,例如在jvm.options中。问题是,

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

通常会设置系统属性
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
,例如在jvm.options中。问题是,我似乎无法使该解决方案工作,因为服务器在加载log4j2属性和适配器的
log4jjul
jar之前很久就使用了java-util日志记录。这会导致在尝试启动服务器后立即抛出异常(请参阅my)

所以我想,在启动过程的后期,当jar启动并加载我的log4j2属性时,是否可以将
LogManager
设置为
log4j-jul
jar中的一个

一旦加载(在第174行附近),它就会分配singleton实例。触发加载后无法更换

安装应该可以做到这一点。您应该能够使用默认的LogManager将该处理程序添加到根日志记录器

通常,可以通过将以下内容添加到logging.properties中来完成此操作:

.handlers=org.apache.logging.log4j.jul.Log4jBridgeHandler
.level.INFO
org.apache.logging.log4j.jul.Log4jBridgeHandler.level=ALL

根据,这在LOG4J2版本3.0.0中是固定的。截至2019年4月25日,这似乎是一个未来版本。对于log4j22.3,您可以使用or。

我很困惑-从您的链接来看,Log4jBridgeHandler似乎是log4jjul的一部分,但是我下载了最后两个版本的jar,里面没有这样的类。findjar也没有该类的结果。你能告诉我怎样才能得到这门课吗?或者我应该只是代码复制它?现在我用Log4jBridgeHandler类的代码副本测试了它,它工作得很好!