我基本上遵循了官方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.FileIO上CONSOLE.例如,我仍然在控制台上得到这样的东西:
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配置文件中工作.
该问题的解决方案如下:只需在“logback.groovy”的开头添加类 ThresholdProvider 的导入:
import ch.qos.logback.classic.filter.ThresholdFilter
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作。
我在一个简单的项目中尝试了提供的“logback.groovy”。还有另一个问题:消息被写入控制台两次。我认为这可以通过微调“记录器”和“根”调用来解决。
| 归档时间: |
|
| 查看次数: |
1271 次 |
| 最近记录: |