Logback:加载 groovy 配置

Logback: Load groovy config

如何以编程方式加载名为 groovy 配置 (logback-config.groovy) 的自定义配置?
当我尝试时:

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(this.getClass().getResource("/logback-config.groovy"));

获得经验值:

ch.qos.logback.core.joran.spi.JoranException: Problem parsing XML document. See previously reported errors.

怎么了?

这里的问题是 JoranConfigurator 仅针对 XML 配置;对于 Groovy 配置文件,logback 使用不同的 class GafferConfigurator。 (不幸的是,logback 文档并没有很好地宣传这一事实。)但与其直接引用 GafferConfigurator,不如使用 ContextInitializer class 更好:

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
new ContextInitializer(loggerContext).configureByResource(this.getClass().getResource("/logback-config.groovy"));

这允许您同时处理 XML 和 Groovy 文件类型,并利用一些 logback 的内置错误检查。