背景
功能权限服务之前经手的人比较多,不同人日志打印比较乱,并且服务日志打印量很大,但当需要排查问题时,大日志量
grep困难、关键信息打印不全或没有打印等问题很痛苦,决定对日志方面进行统一的优化
优化目标
- 对服务日志量大、关键信息不全、代码中侵入式打印日志乱等问题进行优化
- 人员角色模块,经常有用户、业务不知道什么时候人员角色发生了变化,针对这个模块增加审计日志,便于观察分析调用、排查问题,给出证据
- 日志上报日志中心,使得服务发布后日志不丢失
优化记录
服务日志优化
- 日志级别  
- 日志内容 - traceId,方法名,方法调用链路,每个方法耗时,入参,出参,异常堆栈
- 相关类 
 使用- Spring AOP、- ThreadLocal、- Spring StopWatch、- Annotation注解
 支持两种日志打印方式,- AOP打印和手动调用 
- 使用方式 
- 新建切面类,继承 TraceLogAop抽象类
- 编写切点,使用环绕通知,切在需要打印日志的地方
- 通知中调用父类的 around方法,传入ProceedingJoinPoint和打印耗时日志阈值
- 如需要特殊处理异常,则重写 exceptionHandler方法 
- 在需要打印 info日志的方法上添加@InOutLog("info")注解,debug级别不用添加,默认就是debug级别 
- 也可以修改 logback.xml文件,添加一个logger把日志打印到独立的文件中 
- 优化效果
 入参、出参效果 
 方法调用链路、耗时效果 
 根据详细的入参、出参可以快速、准确的排查问题;根据调用链路和耗时可以来分析耗时长的接口,以及耗时的占比,找到最耗时的方法,从而进行优化
添加审计日志
人员角色模块增加审计日志,上报ES,使用 kibana 展示,便于观察分析调用、排查问题,给出证据

上报日志中心
有时查问题前一天晚上有过发版,日志信息丢失,导致查询问题困难,针对这种情况把日志上报到日志中心的 Grafana Explore中
把日志整体优化后,再也没有了以前的苦恼,有什么问题一目了然(^▽^)
 
     
        