logback-classic需要scanPeriod属性才能使auto-reload正常工作

Jak*_*ski 7 logback

这是logback经典中的错误还是我错过了什么?该文档非常明确scanPeriod地作为可选属性:

默认情况下,将每分钟扫描一次配置文件以进行更改.

但是,给出logback.xml如下文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" >           
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5p %c{1}:%L - %m%n</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <root level="WARN">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我得到的logback以下输出和扫描并不能正常工作.

16:40:56,244 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:40:56,244 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:40:56,244 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/jbochenski/acme/acme-func-test/conf/logback.xml]
16:40:56,323 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:40:56,325 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
16:40:56,331 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:40:56,354 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN
16:40:56,355 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
16:40:56,355 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
16:40:56,356 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@146ba0ac - Registering current configuration as safe fallback point
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是将配置更改为添加scanPeriod属性,<configuration debug="true" scan="true" scanPeriod="1 minute">它将开始工作:

16:43:44,584 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:43:44,585 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:43:44,585 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/jbochenski/acme/acme-func-test/conf/logback.xml]
16:43:44,686 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [file:/home/jbochenski/acme/acme-func-test/conf/logback.xml] 
16:43:44,686 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 1 minutes
16:43:44,688 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:43:44,691 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
16:43:44,700 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:43:44,727 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN
16:43:44,727 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
16:43:44,727 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
16:43:44,728 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@f6c48ac - Registering current configuration as safe fallback point
Run Code Online (Sandbox Code Playgroud)

使用:

  • logback-classic:1.1.7
  • slf4j:1.7.13

ton*_*y19 9

更新:请参阅LOGBACK-1194


这确实看起来像一个logback bug,我建议在JIRA中提交一个问题.

在1.1.7中,进行了一些影响如何处理的重构scanPeriod.更改包括在未指定时完全放弃scan选项scanPeriod.我认为这不是故意的.