Logback 1.3.9+版本如何替代configureByResource配置ContextInitializer?
Logback 1.3.9+ 替代 configureByResource 方法的配置方案
在Logback 1.3.8及更早版本中,可通过ContextInitializer的configureByResource方法加载指定资源文件完成日志配置,示例代码如下:
new ContextInitializer(loggerContext).configureByResource( Thread.currentThread().getContextClassLoader().getResource("pattern-console-logback.xml"));
Logback 1.3.9及以上版本移除了该方法,你可以通过以下两种方式实现完全相同的配置效果:
方式一:直接调用 LoggerContext 的 configure 方法
import ch.qos.logback.core.util.URLResource; import java.net.URL; // 获取目标配置文件的URL URL configUrl = Thread.currentThread().getContextClassLoader().getResource("pattern-console-logback.xml"); if (configUrl != null) { // 传入URLResource实例完成配置 loggerContext.configure(new URLResource(configUrl)); }
方式二:通过 ContextInitializer 的 configure 方法
import ch.qos.logback.classic.util.ContextInitializer; import ch.qos.logback.core.util.URLResource; import java.net.URL; URL configUrl = Thread.currentThread().getContextClassLoader().getResource("pattern-console-logback.xml"); if (configUrl != null) { new ContextInitializer(loggerContext).configure(new URLResource(configUrl)); }
这两种方式都直接加载你指定的资源文件,不会触发autoConfig的自动扫描逻辑,完全匹配原configureByResource方法的行为。
内容的提问来源于stack exchange,提问作者regu
相关产品推荐
相关产品推荐

