天天看点

程序员因重复记录日志撑爆ELK被辞退!(上)1 logger配置继承关系错误

由于日志配置繁杂,很多同学喜欢直接cv其他项目或网上博客的配置文件,而不仔细研究每个配置项。最常见的就是重复记录日志,这不但给查看和统计带来不必要麻烦,还会增加磁盘和日志收集系统负担。

下面看几个常见导致该错误的案例,大家引以为戒,避免被辞退。

1 logger配置继承关系错误

定义方法记录debug、info、warn、error四种日志:

程序员因重复记录日志撑爆ELK被辞退!(上)1 logger配置继承关系错误

Logback配置

程序员因重复记录日志撑爆ELK被辞退!(上)1 logger配置继承关系错误

配置看没啥问题,但执行方法后明显记录重复了:

程序员因重复记录日志撑爆ELK被辞退!(上)1 logger配置继承关系错误

错因

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

程序员因重复记录日志撑爆ELK被辞退!(上)1 logger配置继承关系错误