如何使ThresholdFilter在logback中工作

JBT*_*JBT 10 groovy logback

我基本上遵循官方logback文档第7章中的说明.不幸的是,事情似乎没有正常工作,我无法弄清楚原因.所以,我们来了.

我想要实现的是只在控制台和所有调试及上面的日志文件中记录info及以上的信息.我有这些线logback.groovy:

appender("CONSOLE", ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{YYYY-MM-dd/HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
    }
    filter(ThresholdFilter) {
        level = INFO
    }
}

logger("vh.FileIO", DEBUG, ['CONSOLE','FILE-DEBUG'])
root(DEBUG, ['CONSOLE'])
Run Code Online (Sandbox Code Playgroud)

我以为ThresholdFilter会使得CONSOLE只需要信息和上述日志.不过,我仍然得到的调试日志vh.FileIOCONSOLE.例如,我仍然在控制台上得到这样的东西:

2013-10-11/21:48:10.537 [main] DEBUG vh.FileIO - Combining all records into file ./output/sip_sample_data_output.csv
Run Code Online (Sandbox Code Playgroud)

那么,我在这里错过了什么?

更新

在使用logback配置后,如果我使用XML配置文件,我发现ThresholdFilter按预期工作.但是,我仍然想知道为什么它不能在groovy配置文件中工作.

akh*_*khl 5

该问题的解决方案如下:只需在“logback.groovy”的开头添加类 ThresholdProvider 的导入:

import ch.qos.logback.classic.filter.ThresholdFilter
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作。

我在一个简单的项目中尝试了提供的“logback.groovy”。还有另一个问题:消息被写入控制台两次。我认为这可以通过微调“记录器”和“根”调用来解决。