最代码广告位
月之氏族的gravatar头像
月之氏族2019-12-08 22:42:44

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

是否原创(转载必填原文地址)

原创

项目截图(必填)

Spring Boot简单而又强大的AOP异步日志注解系统

运行截图(必填)

上面接收的操作日志运行结果

Spring Boot简单而又强大的AOP异步日志注解系统

下面是 demo 运行结果

http://localhost:8071/opLog  运行结果

Spring Boot简单而又强大的AOP异步日志注解系统

Spring Boot简单而又强大的AOP异步日志注解系统

http://localhost:8071/accessLog  运行结果

Spring Boot简单而又强大的AOP异步日志注解系统

Spring Boot简单而又强大的AOP异步日志注解系统

Spring Boot简单而又强大的AOP异步日志注解系统

Spring Boot简单而又强大的AOP异步日志注解系统Spring Boot简单而又强大的AOP异步日志注解系统

http://localhost:8071/docs.html运行结果

api接口说明文档

Spring Boot简单而又强大的AOP异步日志注解系统

请求示例

Spring Boot简单而又强大的AOP异步日志注解系统

注意事项

1.这里的SQL、页面 都是一个示例 , 可以根据实际情况调整

2.示例的 log.sql 里面拥有 JSON 字段 , 需要mysql版本最低为 5.7

3.示例的 mysql 存储的 ip地址 使用的是 bigint 字段 ,在存入是 使用 INET_ATON() 函数 将 IP 地址转换为 十进制 整数 , 取出是 使用  INET_NTOA() 函数 将 整数转换为IP地址

4.如果你需要单独的获取IP地址实际地理位置的话 , 可以使用 IpUtils 类 ,它提供了如下的三种算法

Spring Boot简单而又强大的AOP异步日志注解系统

之后会返回一个 Region 实体类 ,它包含了 国家、省份、城市、isp(互联网服务提供商)

获取到的地理位置,仅供参考

Spring Boot简单而又强大的AOP异步日志注解系统

5.项目运行步骤

第一步:你需要在合适的位置使用

@ComponentScan(basePackages = { "cn.novelweb"})

指定SpringBoot扫描需要扫描的包,这个注解通常和 @Configuration 这个注解一起使用

Spring Boot简单而又强大的AOP异步日志注解系统

第二步:在你认为合适的位置使用注解

这里提供了两个注解,分别为:@AccessLog(访问日志)、@OpLog(操作日志)

@AccessLog:

这个注解通常是使用在访问页面的地方,如:xxx页面被ip为:xxx的访问了

注解里面提供一个 String title(模块标题) 和 boolean isGetIp(是否需要获取访问IP的真实地理位置)

title 默认为 "" , 自己定义的页面的名称 ,这个通常是写 xxx页面、xxx列表

isGetIp 默认为 true , 默认情况下 系统会自动查询获取到的ip地址的 真实地理位置,但是这个操作 需要耗费一定的时间,一般平均在 60ms~70ms 左右

请根据实际情况选择是否需要开启 ,不需要的话设置为false就好了(获取到的IP地理位置 仅供参考)

Spring Boot简单而又强大的AOP异步日志注解系统

@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类提供了一些默认的选项

Spring Boot简单而又强大的AOP异步日志注解系统

@OpLog通常是放在api接口上的

Spring Boot简单而又强大的AOP异步日志注解系统

第三步:接收日志系统的异步处理结果

这里的两个日志注解需要分别实现对应的接口

接收 @AccessLog 需要实现 AccessLogCompletionHandler

接收 @OpLog  需要实现 OpLogCompletionHandler

在这里你可以将接收到的处理结果存入MySQL、Redis、MongoDB等等,用来持久化日志

也可以在这里组装一些你需要存储的自定义的字段,比如 当前登录的用户信息

这里我以持久化到MySQL为例

接收 @AccessLog

Spring Boot简单而又强大的AOP异步日志注解系统

接收 @OpLog

Spring Boot简单而又强大的AOP异步日志注解系统

这里的OpLogInfo继承自AccessLogInfo,OpLogInfo 比 AccessLogInfo 多了一些字段

Spring Boot简单而又强大的AOP异步日志注解系统

你可以组装你自己的实体类 ,选取你所需要的字段 存储


打赏

已有1人打赏

最代码官方的gravatar头像

文件名:logAnnotate.zip,文件大小:49.572K下载
最代码最近下载分享源代码列表最近下载
best2018 LV411月14日
太阳太阳月亮月亮星星
345738842 LV81月7日
月亮月亮
hobbit LV31月6日
星星星星星星
776021811 LV31月2日
星星星星星星
zhen_cd LV101月1日
月亮月亮星星星星
陈增年 LV62019年12月27日
月亮星星星星
外卖超人 LV22019年12月27日
星星星星
liuwenlong LV142019年12月24日
月亮月亮月亮星星星星
luocheng LV172019年12月23日
太阳星星
li837437513 LV122019年12月21日
月亮月亮月亮
最代码最近浏览分享源代码列表最近浏览
暂无贡献等级
或爱好 LV31月17日
星星星星星星
longshaoly LV41月16日
月亮
SmorEchenyang LV21月14日
星星星星
天狼归来 LV11月13日
星星
fcdcdwc LV91月13日
月亮月亮星星
woldxy LV81月13日
月亮月亮
whswhs LV61月11日
月亮星星星星
通天晓 LV81月9日
月亮月亮
asdfgcjw LV21月8日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友