谈谈日志的治理

​ 说起日志,开发的同学应该并不陌生,今天来简单谈一下关于系统业务日志和操作日志如何治理……

一、统一业务日志打印规范

可以开发统一业务组件工具类,业务⽇志统⼀使⽤组件进⾏输出

根据业务语境日志中都要带标识业务流程上下文业务字段,如订单编号等

每个service⽅法的⼊参、出参都需要打印⽇志,级别是info

抛异常前需要打印⽇志,⽇志级别视情况⽽定,可以是info,也可以是error

catch⾥⾯需要打印⽇志,级别是error,并且要输出全部错误信息(eg:log.info(‘biz error’, e))

遇到if…else…等条件时,每个分⽀⾸⾏尽量打印⽇志

核心业务/核⼼功能模块,建议打印较完整的⽇志

二、统一操作日志记录方式

在系统初期大部分都是采用直接和业务日志夹杂在一起实现方式来进行,好一点吧操作日志和业务日志文件分开,目的达到了,但是很不优雅,业务代码中还是夹杂好多操作日志逻辑,比如操作人,和一些原业务数据查询等

技术参考

美团技术博客《如何优雅地记录操作⽇志?》

https://tech.meituan.com/2021/09/16/operational-logbook.html

自研操作日志的记录框架可以优雅的记录操作日志:

操作⽇志框架本质上是提供了⼀个简单的⼩组件,通过⾃定义注解+⾃定义函数,并配合SpringEL表达

式来实现⽆侵⼊式记录操作⽇志

这个⼩组件的优点是

  • 接⼊⽅便,并且对现有代码⽆侵⼊

  • 代码量⼩,结构清晰,扩展⽅便

先上框架设计的泳道图

统一操作日志框架泳道图

这样设计是不是很清晰、易懂,完全和业务代码解耦,可以很好的治愈对代码有洁癖“强迫症患者”;同时也让开发者专注于业务开发。