由于日志配置繁杂,很多同学喜欢直接cv其他项目或网上博客的配置文件,而不仔细研究每个配置项。最常见的就是重复记录日志,这不但给查看和统计带来不必要麻烦,还会增加磁盘和日志收集系统负担。
下面看几个常见导致该错误的案例,大家引以为戒,避免被辞退。
1 logger配置继承关系错误
图片
定义方法记录debug、info、warn、error四种日志:
Logback配置
配置看没啥问题,但执行方法后明显记录重复了:
错因
CONSOLE这个Appender同时挂载到俩Logger,定义的
如此配置的初衷是啥?
本想实现自定义logger配置,让应用内日志暂时开启DEBUG级别。
其实,这无需重复挂载Appender,去掉
- <logger name="org.javaedge.logging" level="DEBUG"/>
若自定义
可设置
2 配置LevelFilter错误
记录日志到控制台时,将日志按级别记录到俩文件
执行结果
info.log 文件包含INFO、WARN和ERROR三级日志,不符预期
error.log包含WARN和ERROR俩级别日志,导致日志重复收集图片
事故问责
一些公司使用自动化ELK方案收集日志,日志会同时输出到控制台和文件,开发人员在本地测试不会关心文件中记录的日志,而在测试和生产环境又因为开发人员没有服务器访问权限,所以原始日志文件中的重复问题难以发现。
到底为何重复?
ThresholdFilter源码解析
图片
该案例我们将 ThresholdFilter 置 WARN,因此可记录WARN和ERROR级日志。
LevelFilter
用于比较日志级别,然后进行相应处理。
和ThresholdFilter不同,LevelFilter仅配置level无法真正起作用。
由于未配置onMatch和onMismatch属性,所以该过滤器失效,导致INFO以上级别日志都记录了。
修正
配置LevelFilter的onMatch属性为ACCEPT,表示接收INFO级别的日志;配置onMismatch属性为DENY,表示除了INFO级别都不记录:
如此,_info.log文件只会有INFO级日志,不会再出现日志重复。
本文转载自微信公众号「 JavaEdge」,可以通过以下二维码关注。转载本文请联系 JavaEdge公众号。
作者:肖剑 编辑:张楠 来源:阿里云研究公众号 今年中央第一次把数据要素和劳动...
经过六十余年的发展,人工智能(AI)及 机器学习(ML)已经成为新一轮产业变革的...
大数据和机器翻译可以结合在一起对抗冠状病毒疫情,人们需要了解这两种技术如何...
买 域名 不用备案吗?这个问题主要取决于域名的用途,如果不 建站 就不需要备案...
公司 邮箱 可以群发邮件吗?公司邮箱可以进行公司内部或外部少量邮件的群发,但...
如何选择好的 服务器托管 商,TOP云(zuntop.com)科技技术来支招!! 服务器托管 ...
阿里巴巴集团董事会主席兼首席执行官张勇在2020云栖大会开幕式上说,新技术既是...
一、文件服务器主要任务则是为网络上的计算机提供多样化的服务,如在文件共享及...
在各行各业中,我们都得一直学习,无论你是编程新手还是经验丰富的开发人员,了...
在 Matplotlib 教程中,我们将讨论一些可能的图表自定义。 为了开始修改子图,我...