我正在尝试压缩重新加载配置时发生的logback内部日志记录。我查看了this问题,以及this one,我尝试了每个推荐的解决方案。但是,这种情况似乎有点不同。在大多数情况下,logback表现良好。在我重新加载之前,一旦重新加载,它就不会发出任何窥视,但是当重新加载运行时,它会记录a ton of stuff。
我试过了:
我怀疑问题是当一个人调用ch.qos.logback.classic.jmx.JMXConfiguratorMBean.reloadByURL时,它首先重置配置,然后加载新的配置。在interrim中,没有一个配置有效,或者另一个配置,因此后备是记录INFO。
关于如何安抚这个家伙的任何建议?
感谢。
答案 0 :(得分:0)
我想实际上在堆栈上写一个问题会震动脑细胞。所以我通过直接调用JoranConfigurator并跳过重置过程来解决这个问题。另外,我从根记录器中删除了STDOUT appender(因为目的是从STDOUT切换到文件记录)。
final URL url = Main.class.getClassLoader().getResource("file-logback.xml");
final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
try {
final JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(context);
configurator.doConfigure(url);
final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.detachAppender("STDOUT");
log.info("Set internal logback config with file [{}] and roll pattern [{}]", logFileName, rollPattern);
} catch (JoranException je) {
System.err.println("Failed to configure internal logback");
je.printStackTrace(System.err);
}