11

我基本上按照官方 logback 文档第 7 章的说明进行操作。不幸的是,事情似乎无法正常工作,我不知道为什么。所以,我们到了。

我想要实现的是仅在控制台中记录信息及以上内容,并将所有调试及以上内容记录到日志文件中。我的中有这些行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.FileIOCONSOLE. 例如,我仍然在控制台上得到这样的东西:

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 配置文件中不起作用。

4

1 回答 1

5

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

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

然后它按预期工作。

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

于 2013-12-21T18:22:31.257 回答