logback - 重新加载配置时的聊天记录

时间:2015-03-06 20:58:07

标签: java logging configuration logback

我正在尝试压缩重新加载配置时发生的logback内部日志记录。我查看了this问题,以及this one,我尝试了每个推荐的解决方案。但是,这种情况似乎有点不同。在大多数情况下,logback表现良好。在我重新加载之前,一旦重新加载,它就不会发出任何窥视,但是当重新加载运行时,它会记录a ton of stuff

我试过了:

  1. ch.qos 记录器设置为WARN。
  2. 配置始终是debug =" false"。
  3. 使用编码器而不是布局。
  4. 在配置中添加了NopStatusListener。
  5. 升级到最新的logback(1.1.2)
  6. 确保没有错误。除了INFO消息之外,不会记录任何内容。
  7. 尝试使用过滤器拒绝任何不是>的ch.qos事件。 INFO。
  8. 类路径中只有一个 logback.xml ,虽然我在同一目录中也有 file-logback.xml ,这是我正在制作的交换机导致这个繁琐的日志记录,但我不认为该文件会妨碍。 (以上所有项目都适用于这两个文件,我尝试将file-logback.xml重命名为一些神秘的内容,以确保它没有被错误地接收)
  9. 我怀疑问题是当一个人调用ch.qos.logback.classic.jmx.JMXConfiguratorMBean.reloadByURL时,它首先重置配置,然后加载新的配置。在interrim中,没有一个配置有效,或者另一个配置,因此后备是记录INFO。

    关于如何安抚这个家伙的任何建议?

    感谢。

1 个答案:

答案 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);
    }                                               
相关问题