是否可以对
java.util.logging.Logger
进行典型调用并使用 SLF4J 将其路由到 Logback?这会很好,因为我不必逐行重构旧的 jul 代码。
例如,假设我们有这一行:
private static Logger logger = Logger.getLogger(MahClass.class.getName());
//...
logger.info("blah blah blah");
如果将其配置为通过 SLF4J 进行调用,那就太好了。
这非常简单,不再是性能问题。
中也有精确的示例将 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>