我基本上遵循了官方logback文档的the instruction in Chapter 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.FileIO
上获得CONSOLE
的调试日志。例如,我仍然在控制台上得到类似的内容:
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配置文件中工作。
答案 0 :(得分:4)
问题的解决方法如下:只需在“logback.groovy”开头添加类ThresholdProvider的导入:
import ch.qos.logback.classic.filter.ThresholdFilter
然后按预期工作。
我在一个简单的项目中尝试了提供的“logback.groovy”。还有一个问题:消息被写入控制台两次。我认为这可以通过微调“记录器”和“根”调用来解决。