logback 配置文件修改后自动重新加载

如果设置成自动重新加载,logback-classic会扫描配置文件里的变化,并且当发生变化后进行重新配置。

设置访方法是设configuration元素的scan属性为true。

<configuration scan="true">
... 
</configuration>

默认情况下,每隔一分钟扫描一次。configuration元素的scanPeriod属性控制扫描周期,其值可以带时间单位,包括:milliseconds、seconds、minutes和hours。

<configuration scan="true" scanPeriod="30 seconds">
 ... 
</configuration>

 如果没写明时间单位,则默认为毫秒。

内部实现是这样的,当设置扫描属性为true时,会安装一个叫ReconfigureOnChangeFilter的TurboFilter。每次调用logger的打印方法时,都会进行扫描。比如,当名为myLogger的logger执行“myLogger.debug("hello");”时,如果scan属性为true,则ReconfigureOnChangeFilter会被调用。而且,即使myLogger的debug级别被禁用了,仍然会调用上述过滤器。

考虑到在任何logger在每次被调用时都要调用ReconfigureOnChangeFilter,这个过滤器的性能就变得十分关键了。为提高性能,不会在每个logger被调用时去检查是否需要扫描,而是每隔16次记录操作进行一次检查。简言之,当配置文件改变后,它会被延时重新加载,延时时间由扫描间隔时间和一些logger调用所决定。

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2393596