如何以编程方式告诉 Logback 重新加载配置
我知道有一个reloadDefaultConfiguration()jmx操作,但是如果没有获取MBean的实例并调用此操作,是否有Logback api来重新加载默认配置(可以选择指定日志配置文件路径)?
我知道有一个reloadDefaultConfiguration()jmx操作,但是如果没有获取MBean的实例并调用此操作,是否有Logback api来重新加载默认配置(可以选择指定日志配置文件路径)?
这是以下各项的源代码:JMXConfigurator.reloadDefaultConfiguration()
public void reloadDefaultConfiguration() throws JoranException {
ContextInitializer ci = new ContextInitializer(loggerContext);
URL url = ci.findURLOfDefaultConfigurationFile(true);
loggerContext.reset();
ci.configureByResource(url);
}
在您需要的地方运行此代码怎么样?
唯一的问题是变量。您可以使用以下命令获取它:loggerContext
(LoggerContext)LoggerFactory.getILoggerFactory()
不幸的是,看起来没有精心设计的API来做到这一点,那么提出问题呢?另外,您是否知道Logback具有内置的自动刷新功能?
为此,我使用了以下代码:
public static void reloadLogger() {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
ContextInitializer ci = new ContextInitializer(loggerContext);
URL url = ci.findURLOfDefaultConfigurationFile(true);
try {
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
loggerContext.reset();
configurator.doConfigure(url);
} catch (JoranException je) {
// StatusPrinter will handle this
}
StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
}