业务场景
最近开发项目中有一个用户查看操作日志需求,因为我们后端是多个SpringBoot微服务提供接口,于是就准备开发一个日志记录的Starter,具体方案就是基于AOP+自定义注解,记录用户的操作日志。
1 | markdown复制代码* 我会通过代码注释的方式介绍每个业务,结合注释阅读更易理解 |
搭建Starter项目
- rest-log-spring-boot-start
- 自定义注解 RestLog
1 | less复制代码@Inherited |
1 | 复制代码我们业务场景需要记录用户操作的模块,做了什么操作,描述信息为拓展字段,可以根据实际需求增加更多信息。 |
- 定义日志对象
1 | java复制代码@Data // Lombok注解 |
- 定义切面
1 | scss复制代码@Aspect |
总结:1、切面业务中,进行了请求头的判断(判断是微服务间请求还是客户端请求,避免微服务间的rest请求被记入日志中);2、将请求参数,模块信息等等封装为一个实体,发送到kafka,降低日志业务对接口性能影响;3、采用kafka发送能够更加灵活的应用于微服务系统,日志管理服务监听topic,微服务集成Stater后配置这个topic,最终微服务的操作日志系统就可以做到快速集成,统一管理。
应用starter
springboot服务引入starter依赖
1 | xml复制代码<dependency> |
添加配置到application.yaml
1 | less复制代码rest-log: |
在接口上添加注解
1 | java复制代码@RestController |
添加kafka监听(只需要在提供日志存储及查询业务的服务添加监听)
1 | java复制代码@Service |
本文转载自: 掘金