同时使用log4j和java.util.logging

时间:2018-05-22 07:22:36

标签: logging log4j java.util.logging

我们使用log4j进行日志记录,但Application也依赖于几个使用java.util.logging的第三方。 在logging.properties中更改格式以使其与其他日志一样,这是非常简单的,但我如何确保这些第三方写入与主应用程序相同的文件。

我担心如果我在logging.properties中使用相同的文件,log4j和logging.properties可能会导致性能和正确性问题。否则我将需要为那些在我的情况下不可取的文件创建不同的文件。有没有干净的方式

1 个答案:

答案 0 :(得分:0)

您将无法让两个框架打开相同的目标文件,因为JUL希望对目标日志文件拥有独占所有权。

您需要一个logging bridge来转换来自JUL的日志记录并将它们发布到Log4J。

一个例子是Log4j JDK Logging Adapter

  

JDK日志记录适配器是使用Log4j的java.util.logging.LogManager的自定义实现。此适配器可与Log4j API或Log4j Core一起使用。与API一起使用时,JUL的一些功能不受支持。但是,这确实允许除了Core提供程序之外的任何其他Log4j提供程序与JUL一起使用。

     

要使用JDK日志记录适配器,必须将系统属性java.util.logging.manager设置为org.apache.logging.log4j.jul.LogManager

另一个流行的例子是jul-to-slf4j bridge

  

jul-to-slf4j.jar工件包括一个java.util.logging(jul)处理程序,即SLF4JBridgeHandler,它将所有传入的jul记录路由到SLF4j API。