成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot中通過注解優雅記錄操作日志

開發 架構
本文介紹一種SpingBoot系統操作記錄的實現方法,主要解決誰在什么時間對什么做了什么事。


前言

本文介紹一種SpingBoot系統操作記錄的實現方法,主要解決誰在什么時間對什么做了什么事。

準備

1、添加依賴

<dependency>
<groupId>io.github.mouzt</groupId>
<artifactId>bizlog-sdk</artifactId>
<version>3.0.0</version>
</dependency>

2、SpringBoot入口打開開關,添加 @EnableLogRecord 注解

@EnableLogRecord(tenant = "com.zhangls.log")
@SpringBootApplication
public class LogApplication {
public static void main(String[] args) {
SpringApplication.run(LogApplication.class, args);
}
}

3、@LogRecord注解說明

  • type:是拼接在 bizNo 上作為 log 的一個標識,日志的主分類
  • subType:日志的二級
  • bizNo:日志的流水號。
  • success:方法調用成功后把 success 記錄在日志的內容中
  • fail:方法調用失敗后把 fail記錄在日志的內容中
  • SpEL 表達式:其中用雙大括號包圍起來的(例如:{{#browseRecord.username}})#browseRecord.username 是 SpEL表達式。Spring中支持的它都支持的。比如調用靜態方法,三目表達式。SpEL 可以使用方法中的任何參數

實現

1、打印調用成功日志

@LogRecord(
subType = "開發文章瀏覽",
extra = "{{#browseRecord.toString()}}",
success = "{{#browseRecord.username}}查看了「{{#browseRecord.articleTitle}}」,結果:{{#_ret}}",
type = "scan",
bizNo = "{{#browseRecord.articleId}}")
public boolean success(BrowseRecord browseRecord) {
return true;
}

調用參數:

日志輸出:

【logRecord】log=LogRecord(id=null, tenant=com.zhangls.log, type=scan, subType=開發文章瀏覽, bizNo=9999, operator=111, actinotallow=九天銀河聊編程查看了「JAVA技術揭秘」,結果:true, fail=false, createTime=Mon Mar 06 10:41:25 CST 2023, extra=BrowseRecord(username=九天銀河聊編程, articleId=9999, articleTitle=JAVA技術揭秘), codeVariable={ClassName=interface
com.zhangls.log.service.LogService, MethodName=success})

2、打印調用失敗日志

@LogRecord(
fail = "瀏覽失敗,失敗原因:「{{#_errorMsg}}」",
subType = "開發文章瀏覽",
extra = "{{#browseRecord.toString()}}",
success = "{{#browseRecord.username}}查看了「{{#browseRecord.articleTitle}}」,結果:{{#_ret}}",
type = "scan",
bizNo = "{{#browseRecord.articleId}}")
public boolean fail(BrowseRecord browseRecord) {
int tmp = 1 / 0;
return false;
}

調用參數:

日志輸出:

【logRecord】log=LogRecord(id=null, tenant=com.zhangls.log, type=scan, subType=開發文章瀏覽, bizNo=9999, operator=111, actinotallow=瀏覽失敗,失敗原因:「/ by zero」, fail=true, createTime=Mon Mar 06 10:48:34 CST 2023, extra=BrowseRecord(username=九天銀河聊編程, articleId=9999, articleTitle=JAVA技術揭秘), codeVariable={ClassName=interface
com.zhangls.log.service.LogService, MethodName=fail})

當然也有一個報錯信息:

3、操作差異記錄

開發記錄函數

@Component("diff")
public class DiffParseFunction implements IParseFunction {
@Override
public boolean executeBefore() {
return true;
}//設置在執行前記錄
@Override
public String functionName() {
return "DIFF";
}
@Override
public String apply(Object value) {
if (StringUtils.isEmpty(value)) {
return "";
}
return "".concat("(").concat(value.toString()).concat(")");
}
}

日志部分代碼

@Override
@LogRecord(success = "更新前{DIFF{#browseRecord}},更新后{{#browseRecord}}",
type = "scan",
bizNo = "{{#browseRecord.articleId}}")
public boolean diff(BrowseRecord browseRecord) {
browseRecord.setArticleTitle("C#技術揭秘");
return true;
}

調用

日志輸出:

【logRecord】log=LogRecord(id=null, tenant=com.zhangls.log, type=scan, subType=, bizNo=9999, operator=111, actinotallow=更新前(BrowseRecord(username=九天銀河聊編程, articleId=9999, articleTitle=JAVA技術揭秘)),更新后BrowseRecord(username=九天銀河聊編程, articleId=9999, articleTitle=C#技術揭秘), fail=false, createTime=Mon Mar 06 10:55:14 CST 2023, extra=, codeVariable={ClassName=interface
com.zhangls.log.service.LogService, MethodName=diff})

4、日志記錄保存數據

根據com.mzt.logapi.beans.LogRecord創建數據庫表結構,生成實體、mapper、XML文件,此過程略。

編寫日志保存服務類。

@Service
public class LogRecordServiceImpl implements ILogRecordService {
@Resource
private TLogrecordMapper logRecordMapper;
@Override
public void record(LogRecord logRecord) {
TLogrecord record = new TLogrecord();
BeanUtils.copyProperties(logRecord, record);
logRecordMapper.insert(record);
}
@Override
public List<LogRecord> queryLog(String bizNo, String type) {
return null;
}
@Override
public List<LogRecord> queryLogByBizNo(String bizNo, String type, String subType) {
return null;
}
}

代碼實現

@Override
@LogRecord(
fail = "失敗原因:「{{#_errorMsg}}」",
subType = "開發文章瀏覽",
operator = "admin",
extra = "{{#browseRecord.toString()}}",
success = "{{#browseRecord.username}}查看了「{{#browseRecord.articleTitle}}」,結果:{{#_ret}}",
type = "scan",
bizNo = "{{#browseRecord.articleId}}")
public boolean saveDb(BrowseRecord browseRecord) {
return true;
}

控制臺輸出:

數據庫記錄:

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-09-02 00:27:51

SpringAOP自定義

2024-12-18 12:10:00

2021-11-10 10:03:18

SpringBootJava代碼

2022-06-14 10:47:27

項目日志PUT

2024-01-04 07:55:32

系統操作日志接口

2022-02-15 17:56:19

SpringBoot日志

2020-09-08 08:44:36

日志記錄基礎設施安全漏洞

2024-09-27 12:27:31

2021-11-17 10:25:28

loguru日志Python

2023-12-20 13:50:00

SpringBootJSON序列化

2023-03-23 22:46:38

Spring限流機制

2024-12-26 07:47:05

Spring管理配置

2023-06-28 08:25:14

事務SQL語句

2023-01-30 07:41:43

2020-09-24 10:00:50

SpringBoo

2025-03-17 00:00:00

2025-03-10 00:00:11

Spring框架數據

2024-05-29 08:12:55

接口參數格式

2024-10-18 08:53:49

SpringMybatis微服務

2024-03-18 14:06:00

停機Spring服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片免费观看视频 | 欧美日韩电影一区二区 | 亚洲视频中文字幕 | 日本高清aⅴ毛片免费 | 国产区在线免费观看 | 国产一区二区在线免费观看 | 免费黄色特级片 | 亚洲超碰在线观看 | 国产欧美综合在线 | 国产乱性 | 日韩欧美国产精品一区 | 国产精品久久久久久久久久妞妞 | 亚洲精品v日韩精品 | 国产一级黄色网 | 成人看片在线观看 | 成年人黄色一级片 | 亚洲一区二区三区久久久 | 日韩视频区| 国精日本亚洲欧州国产中文久久 | 欧美一区二区在线 | 在线观看黄色大片 | 一级在线免费观看 | 97久久久久久久久 | 超碰97人人人人人蜜桃 | 国产精品美女久久久久久久久久久 | 精品成人在线观看 | 美女拍拍拍网站 | 国产 欧美 日韩 一区 | 久久久久久成人 | 一区二区成人 | 国产成人区| 免费黄色的网站 | 欧美一级片| 国产精品色婷婷久久58 | 污书屋 | 久久久久久久久一区 | 91久久 | 国产精品美女久久久 | 久久久久久久久国产精品 | 99久久国产综合精品麻豆 | 精品中文字幕视频 |