spring aop实现日志记录(spring用aop实现日志)

spring aop实现日志记录(spring用aop实现日志)一 功能简介 本文主要记录如何使用 的方式来实现日志记录功能 主要记录的信息有 操作人 操作 IP 方法名 参数 消耗时间 日志类型 操作类型 操作日志和异常日志 以及增删改查记录 操作时间等 主要流程 AOP 切面得到请求数据 gt 发布监听事件 gt 异步监听日志入库 二 项目结构 三 项目实战 1 引入依赖 2 自定义注解 主要标注日志的具体用处也就是具体操作 3 AOP 切面类 AOP 切面类是最主要的 可以使用自定义注解或针对包名实现 AOP 增强



一. 功能简介

本文主要记录如何使用 的方式来实现日志记录功能。

主要记录的信息有: 操作人,操作IP,方法名,参数,消耗时间,日志类型,操作类型(操作日志和异常日志)以及增删改查记录,操作时间等。

主要流程:

AOP切面得到请求数据 -> 发布监听事件 -> 异步监听日志入库

二. 项目结构

三. 项目实战

1.引入依赖
2.自定义注解

主要标注日志的具体用处也就是具体操作

3.AOP切面类

AOP切面类是最主要的,可以使用自定义注解或针对包名实现AOP增强。

1)这里实现了对自定义注解的切点,对使用了自定义注解的方法进行AOP切面处理;

2)对方法运行时间进行监控;

3)对方法名,参数名,参数值,对日志描述以及异常信息的优化处理;

4)发布监听事件,日志异步入库

在方法上增加@Aspect 注解声明切面,使用@Pointcut 注解定义切点,标记方法。

目前使用: 前置通知,后置通知,异常通知

事件发布是由 对象管控的,我们发布事件前需要注入 对象调用publishEvent方法完成事件发布

4.日志实体类

主要记录日志的详细信息

5.ApplicationEvent&Listener完成业务解耦

ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。

其实生活中有很多这样的例子: 我们在平时常见的比赛中,裁判员或者主持人给我们开始的信号,也就是给我们发布了一个开始的事件,而参赛的双方人员都在监听着这个事件,一旦事件发布后双方人员就开始拼命努力赢得比赛。而裁判或者主持人并不关心你比赛的过程,只是给你发布事件你执行就可以了

系统日志事件

我们自定义事件SysLogEvent继承了ApplicationEvent,继承后必须重载构造函数,构造函数的参数可以任意指定,其中source参数指的是发生事件的对象,一般我们在发布事件时使用的是this关键字代替本类对象,而sysLog参数是我们自定义的注册用户对象,该对象可以在监听内被获取。

异步监听日志事件

我们只需要让我们的监听类被Spring所管理即可,在我们用户注册监听实现方法上添加@EventListener注解,该注解会根据方法内配置的事件完成监听。

6.具体用法

只需要在你控制层要记录日志的方法上加上@SysLog注解即可

源码地址

码云: https://gitee.com/li_haodong/pre

GitHub: https://github.com/LiHaodong888/pre

编程小号
上一篇 2025-03-12 20:51
下一篇 2025-02-05 22:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/26262.html