使用 SLF4J 发送/重定向/路由 java.util.logging.Logger (JUL) 到 Logback?

问题描述 投票:0回答:1

是否可以对

java.util.logging.Logger
进行典型调用并使用 SLF4J 将其路由到 Logback?这会很好,因为我不必逐行重构旧的 jul 代码。

例如,假设我们有这一行:

private static Logger logger = Logger.getLogger(MahClass.class.getName());
//...
logger.info("blah blah blah");

如果将其配置为通过 SLF4J 进行调用,那就太好了。

java logging slf4j
1个回答
64
投票

这非常简单,不再是性能问题。

SLF4J 手册中记录了两种方法。 Javadocs

中也有精确的示例

将 jul-to-slf4j.jar 添加到类路径,或通过 Maven 依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
     <artifactId>jul-to-slf4j</artifactId>
    <version>1.7.0</version>
</dependency>

如果您没有logging.properties(对于java.util.logging),请将其添加到您的引导代码中:

SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();

如果您有logging.properties(并且想保留它),请将其添加到其中:

handlers = org.slf4j.bridge.SLF4JBridgeHandler

为了避免性能损失,请将此 contextListener 添加到 logback.xml(从 Logback 版本 0.9.25 开始):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <!-- reset all previous level configurations of all j.u.l. loggers -->
        <resetJUL>true</resetJUL>
    </contextListener> 

    ...

</configuration>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.