最代碼廣告位
月之氏族的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下載
頂部客服微信二維碼底部
>掃描二維碼關注最代碼為好友掃描二維碼關注最代碼為好友
福彩3d组选020前后关系