如何通过配置过滤苍穹日志
1 业务背景
苍穹默认使用的日志框架是logback,系统通过logback输出日志记录业务排查信息,同时有业务认为不重要的日志比如重复且频繁的日志占用空间,在磁盘空间紧张的客户系统里面,过滤掉非关键日志是越来越紧迫的需求。下面介绍在苍穹系统下过滤输出日志。
2 解决方案
1.首先介绍logback配置存放位置
1)开发助手搭建的本地轻量环境,存放在启动类所属项目的resource目录下面的logback.xml里面,如下图。
启动类中已经设置log.config 属性,系统通过log.config属性加载日志配置文件
2)配置在mc的环境公共配置项。mservice 和web下的配置项是对应各自节点的日志配置属性。注意:启动类所属项目的resource优先级高于mc配置。
2.下面插件代码是打印日志测试插件,配置在页面点击按钮打印一条测试日志。
import java.util.EventObject; public class TestPrintLogPlg extends AbstractFormPlugin { private static final Log logger = LogFactory.getLog(TestPrintLogPlg.class); @Override public void registerListener(EventObject e) { super.registerListener(e); // 侦听主菜单按钮点击事件 this.addItemClickListeners("tbmain"); } @Override public void itemClick(ItemClickEvent evt) { logger.info("测试日志打印1"); super.itemClick(evt); } }
过滤掉这条日志,可以如下配置。注意:生产上可以把这个name替换需要的类名或者是包路径
<logger name="bidt.fys.test.plugin.form.TestPrintLogPlg" level="OFF" additivity="false" > <appender-ref ref="stdot" /> <appender-ref ref="kafka" /> <appender-ref ref="file" /> </logger>
--name 是类名称,也可以使用路径名称,当使用bidt.fys.test.plugin这个路径名称,就代表这条包下面所有类都按照这里的配置执行
--level 是日志级别,DEBUG,INFO,WARN,ERROR,OFF,OFF代表name里的所有类都不输出日志
--addtivity,默认为true,即除了自己appender,还会通过parent的appender进行打印,设置为false则不通过parent的appender进行打印。
注:一次业务打印多次日志,多是addtivity配置不当的问题导致的
--<appender-ref ref="stdot" /> 结合配置文件上下文,一般是用来打印在控制台的
--<appender-ref ref="kafka" />结合配置文件上下文,一般是用来打印在monitor的
--<appender-ref ref="file" />结合配置文件上下文,一般是用来输出在文件目录的
如下图,这样就在业务操作的时候不再输出日志了。
3 注意事项(可选)
日志过滤输出的原则是宜小不宜大,尽量从颗粒度更小的范围去过滤,否则在生产上会造成日志过滤掉关键错误信息,增加后续排查问题的难度。
如何通过配置过滤苍穹日志
本文2024-09-23 00:17:53发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138571.html