Spring Boot简单而又强大的AOP异步日志注解系统
项目描述
一个使用方法很简单,功能很强大的AOP异步的日志系统
通常来说你只需要简单的3个步骤就可以在你原有的SpringBoot项目上集成该日志系统
运行环境
jdk8+tomcat9+mysql 7+IntelliJ IDEA+maven
项目技术(必填)
spring+spring boot+mybatis+layui+jquery
数据库文件
可以自定义数据库字段,这里提供的log.sql仅供参考(sql文件在项目 resources/sql/log.sql)
链接:https://pan.baidu.com/s/1274ilSshHESUu0EUEN8mNw
提取码:p12d
jar包文件
使用maven自行下载
链接:https://pan.baidu.com/s/1BCLdz6eLdSyP3QtxrecWDg
提取码:eklg
是否原创(转载必填原文地址)
原创
项目截图(必填)
运行截图(必填)
上面接收的操作日志运行结果
下面是 demo 运行结果
http://localhost:8071/opLog 运行结果
http://localhost:8071/accessLog 运行结果
http://localhost:8071/docs.html运行结果
api接口说明文档
请求示例
注意事项
1.这里的SQL、页面 都是一个示例 , 可以根据实际情况调整
2.示例的 log.sql 里面拥有 JSON 字段 , 需要mysql版本最低为 5.7
3.示例的 mysql 存储的 ip地址 使用的是 bigint 字段 ,在存入是 使用 INET_ATON() 函数 将 IP 地址转换为 十进制 整数 , 取出是 使用 INET_NTOA() 函数 将 整数转换为IP地址
4.如果你需要单独的获取IP地址实际地理位置的话 , 可以使用 IpUtils 类 ,它提供了如下的三种算法
之后会返回一个 Region 实体类 ,它包含了 国家、省份、城市、isp(互联网服务提供商)
获取到的地理位置 ,仅供参考
5.项目运行步骤
第一步:你需要在合适的位置使用
@ComponentScan(basePackages = { "cn.novelweb"})
指定SpringBoot扫描需要扫描的包,这个注解通常和 @Configuration 这个注解一起使用
第二步:在你认为合适的位置使用注解
这里提供了两个注解,分别为:@AccessLog(访问日志)、@OpLog(操作日志)
@AccessLog:
这个注解通常是使用在访问页面的地方,如: xxx页面被ip为:xxx的访问了
注解里面提供一个 String title(模块标题) 和 boolean isGetIp(是否需要获取访问IP的真实地理位置)
title 默认为 "" , 自己定义的页面的名称 ,这个通常是写 xxx页面、xxx列表
isGetIp 默认为 true , 默认情况下 系统会自动查询获取到的ip地址的 真实地理位置,但是这个操作 需要耗费一定的时间,一般平均在 60ms~70ms 左右
请根据实际情况选择是否需要开启 ,不需要的话设置为false就好了(获取到的 IP地理位置 仅供参考)
@OpLog:
这个注解通常是使用在api接口上面的 , 如: 管理员 admin 对 用户列表 进行了 删除 操作
当然其中的 管理员 admin 需要你自己实现
注解里面提供四个方法分别是: String title(模块标题) 、String businessType(业务类型)、
boolean isSaveRequestData(是否需要保存URL的请求参数)、 boolean isGetIp(是否需要获取访问IP的真实地理位置)
其中的 title、isGetIp 功能同@AccessLog
isSaveRequestData 默认为 true,默认情况下使用 操作日志注解 会自动获取 当前 url 的 请求参数
请根据实际情况选择是否需要获取 url 的 请求参数
businessType 默认为 FixedBusinessType.OTHER(="其他") , 自定义当前正在操作的业务类型 如:新增、删除、导入、导出 等等
这里的FixedBusinessType类提供了一些默认的选项
@OpLog通常是放在api接口上的
第三步:接收日志系统的异步处理结果
这里的两个日志注解需要分别实现对应的接口
接收 @AccessLog 需要实现 AccessLogCompletionHandler
接收 @OpLog 需要实现 OpLogCompletionHandler
在这里你可以将接收到的处理结果存入MySQL、Redis、MongoDB等等,用来持久化日志
也可以在这里组装一些你需要存储的自定义的字段,比如 当前登录的用户信息
这里我以持久化到MySQL为例
接收 @AccessLog
接收 @OpLog
这里的OpLogInfo继承自AccessLogInfo,OpLogInfo 比 AccessLogInfo 多了一些字段
你可以组装你自己的实体类 ,选取你所需要的字段 存储
猜你喜欢
- spring boot+aop实现注解拦截异常日志和接口响应所用时间日志
- springboot自定义注解实现重置密码验证功能
- Springboot实现的图书商城系统
- Springboot开发的精简博客系统
- SpringBoot医药管理系统
- Springboot开发的客户关系管理系统SpringbootCRM
- 基于SpringBoot实现的学生就业管理系统
- SpringBoot开发网站后台管理系统
- springboot实现简单点餐系统
- 基于springboot的员工宿舍管理系统
- SpringBoot整合MyBatis实现记录孩子成长过程的博客系统
- 基于SpringBoot学生就业管理系统(带万字文档)
- /
- /logAnnotate
- /logAnnotate/logAnnotate.iml
- /logAnnotate/pom.xml
- /logAnnotate/src
- /logAnnotate/src/main
- /logAnnotate/src/main/java
- /logAnnotate/src/main/java/com
- /logAnnotate/src/main/java/com/dai
- /logAnnotate/src/main/java/com/dai/config
/logAnnotate/src/main/java/com/dai/config/DataSourceConfiguration.java
/logAnnotate/src/main/java/com/dai/config/DefaultView.java
/logAnnotate/src/main/java/com/dai/config/SpringBeanFactoryUtils.java
/logAnnotate/src/main/java/com/dai/config/SqlPrintInterceptor.java
/logAnnotate/src/main/java/com/dai/config/Swagger2Configuration.java
- /logAnnotate/src/main/java/com/dai/controller
- /logAnnotate/src/main/java/com/dai/config
- /logAnnotate/src/main/java/com/dai
- /logAnnotate/src/main/java/com
- /logAnnotate/src/main/java
- /logAnnotate/src/main
- /logAnnotate
- springboot demo小例子
- 原 SpringBoot入门整合开发java Web项目实例
- 证 Springboot实现的图书商城系统
- 证精 Springboot开发的精简博客系统
- 原证 springboot麦克风录制声音文件保存本地,可拓展ASR识别后返回
- 证精 SpringBoot开发非常美观的java博客系统(包含后台管理功能)
- 原 springboot入门之hello world(小白必看)
- 原证 springboot通过qq邮箱发送邮件
- 证精 Springboot开发的客户关系管理系统SpringbootCRM
- 证 SpringBoot用户登录注册简单实例
- 精 基于SpringBoot实现的学生就业管理系统
- 原 springboot入门demo实例