Groovy 如何使ThresholdFilter在logback中工作

Groovy 如何使ThresholdFilter在logback中工作,groovy,logback,Groovy,Logback,我基本上遵循了官方的logback文档。不幸的是,事情似乎不正常,我也不明白为什么。那么,我们到了 我想要实现的是在控制台中只记录info和更高版本,而在日志文件中记录所有调试和更高版本。我的logback.groovy中有以下几行: appender("CONSOLE", ConsoleAppender) { encoder(PatternLayoutEncoder) { pattern = "%d{YYYY-MM-dd/HH:mm:ss.SSS} [%thread]

我基本上遵循了官方的logback文档。不幸的是,事情似乎不正常,我也不明白为什么。那么,我们到了

我想要实现的是在控制台中只记录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'])
我以为
ThresholdFilter
会使
CONSOLE
只获取信息和以上日志。但是,我仍然在
控制台上获得
vh.FileIO
的调试日志。例如,我在控制台上仍然可以看到如下内容:

2013-10-11/21:48:10.537 [main] DEBUG vh.FileIO - Combining all records into file ./output/sip_sample_data_output.csv
那么,我错过了什么

更新
在使用logback的配置之后,我发现如果使用XML配置文件,ThresholdFilter会像预期的那样工作。但是,我仍然想知道为什么它不能在groovy配置文件中工作。

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

然后它就如预期的那样工作了

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

import ch.qos.logback.classic.filter.ThresholdFilter