由于日志配置繁杂,很多同学喜欢直接cv其他项目或网上博客的配置文件,而不仔细研究每个配置项。最常见的就是重复记录日志,这不但给查看和统计带来不必要麻烦,还会增加磁盘和日志收集系统负担。
下面看几个常见导致该错误的案例,大家引以为戒,避免被辞退。
1 logger配置继承关系错误
定义方法记录debug、info、warn、error四种日志:
Logback配置
配置看没啥问题,但执行方法后明显记录重复了:
错因
CONSOLE这个Appender同时挂载到俩Logger,定义的<logger>
和<root>
,由于定义的<logger>
继承自<root>
,所以同一日志既会通过logger记录,也会发送到root记录,因此应用包下日志出现重复。
如此配置的初衷是啥?
本想实现自定义logger配置,让应用内日志暂时开启DEBUG级别。
其实,这无需重复挂载Appender,去掉<logger>
下挂载的Appender即可
<logger name="org.javaedge.logging" level="DEBUG"/>
若自定义<logger>
需把日志输出到不同Appender,比如
- 应用日志输出到文件app.log
- 其他框架日志输出到控制台
可设置<logger>
的additivity属性为false,就不会继承<root>
Appender