Migarated from here at ‘2012-06-04 17:16:25’.
在使用slf4j进行日志输出的时候,发现这样一个问题。
当使用如下的log level设置的时候,所有“abc.def”包中通过Logger.info()输出的日志在”STDOUT”和”ROLLING_FILE” appender中都会打印两次。(”STDOUT”是控制台,”ROLLING_FILE”是自定义的日志文件。)
1 | <root level="INFO"> |
我考虑了一下,觉得问题的原因是:”root lever logger”和”specific logger”的打印是各自独立的,而不是我原来认为的“如果为abc.def包设定了specific logger则root level logger就不会打印(互斥)”。
因此我把配置改成了:
1 | <root level="INFO"> |
改完之后的日志行为是:abc.def包中的info level的日志会同时出现在”STDOUT”和”ROLLING_FILE” appender中,而其他package的日志只会出现在”STDOUT”中,这正是我想要的。
这说明:root level logger是会对所有Logger输出都有效的,而specific logger只会对设定的package生效。