美文网首页IT必备技能程序猿
程序员因重复记录日志撑爆ELK被辞退!

程序员因重复记录日志撑爆ELK被辞退!

作者: Java斗帝之路 | 来源:发表于2020-12-18 15:07 被阅读0次

    由于日志配置繁杂,很多同学喜欢直接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

    2 配置LevelFilter错误

    记录日志到控制台时,将日志按级别记录到俩文件


    image

    执行结果

    • info.log 文件包含INFO、WARN和ERROR三级日志,不符预期


    • error.log包含WARN和ERROR俩级别日志,导致日志重复收集

    ​​​​​​​

    事故问责

    一些公司使用自动化ELK方案收集日志,日志会同时输出到控制台和文件,开发人员在本地测试不会关心文件中记录的日志,而在测试和生产环境又因为开发人员没有服务器访问权限,所以原始日志文件中的重复问题难以发现。

    到底为何重复?

    ThresholdFilter源码解析

    • 日志级别 ≥ 配置级别 返回NEUTRAL,继续调用过滤器链上的下个过滤器

    • 否则返回DENY,直接拒绝记录日志

    该案例我们将 ThresholdFilter 置 WARN,因此可记录WARN和ERROR级日志。

    LevelFilter

    用于比较日志级别,然后进行相应处理。

    • 若匹配就调用onMatch定义的处理方式:默认交给下一个过滤器处理(AbstractMatcherFilter基类中定义的默认值)

    • 否则调用onMismatch定义的处理方式:默认也是交给下一个过滤器

    和ThresholdFilter不同,LevelFilter仅配置level无法真正起作用

    由于未配置onMatch和onMismatch属性,所以该过滤器失效,导致INFO以上级别日志都记录了。

    修正

    配置LevelFilter的onMatch属性为ACCEPT,表示接收INFO级别的日志;配置onMismatch属性为DENY,表示除了INFO级别都不记录:


    如此,_info.log文件只会有INFO级日志,不会再出现日志重复。

    推荐阅读

    为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我懂了

    字节跳动总结的设计模式 PDF 火了,完整版开放下载

    刷Github时发现了一本阿里大神的算法笔记!标星70.5K

    程序员50W年薪的知识体系与成长路线。

    月薪在30K以下的Java程序员,可能听不懂这个项目;

    字节跳动总结的设计模式 PDF 火了,完整版开放分享

    关于【暴力递归算法】你所不知道的思路

    开辟鸿蒙,谁做系统,聊聊华为微内核

    看完三件事❤️

    如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

    点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

    关注公众号 『 Java斗帝 』,不定期分享原创知识。

    同时可以期待后续文章ing🚀

    相关文章

      网友评论

        本文标题:程序员因重复记录日志撑爆ELK被辞退!

        本文链接:https://www.haomeiwen.com/subject/udhogktx.html