使用slf4j框架发生重复日志问题

在使用slf4j进行日志输出的时候,发现这样一个问题。

当使用如下的log level设置的时候,所有“abc.def”包中通过Logger.info()输出的日志在"STDOUT"和"ROLLING_FILE" appender中都会打印两次。("STDOUT"是控制台,"ROLLING_FILE"是自定义的日志文件。)

  <root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ROLLING_FILE" />
  </root>
  <logger name="abc.def" level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ROLLING_FILE" />
  </logger>
 



我考虑了一下,觉得问题的原因是:root lever logger和specific logger的打印是各自独立的,而不是我原来认为的“如果为abc.def包设定了specific logger则root level logger就不会打印(互斥)”。

因此我把配置改成了:

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
  <logger name="abc.def" level="INFO">
    <appender-ref ref="ROLLING_FILE" />
  </logger>
 



改完之后的日志行为是:abc.def包中的info level的日志会同时出现在"STDOUT"和"ROLLING_FILE" appender中,而其他package的日志只会出现在"STDOUT"中,这正是我想要的。

这说明:root level logger是会对所有Logger输出都有效的,而specific logger只会对设定的package生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值