Springboot - 注解 - 操作日志< bizlog-sdk>

本文介绍了Springboot中bizlog-sdk组件的使用,该组件用于详细记录操作日志,包括操作者、操作时间、操作内容等关键信息。通过注解@LogRecord,可以方便地定制日志内容,如操作类型、成功/失败信息,并支持SpEL表达式。此外,还提供了持久化日志到数据库的示例,以及如何开启和配置日志记录功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Springboot - 注解 - 操作日志< bizlog-sdk>
此组件解决的问题是:

「谁」在「什么时间」对「什么」做了「什么事」

用户登录后,调用后台接口接口,把token对应的用户信息存入redis.
后台通过header获取token,再根据token查询redis中对应用户信息。

2023-09-22更新

@LogRecord(subType = "查询:异常扣款数据列表", success = "{{#_ret}}", type = "1", bizNo = "")
 boolean contains = logRecord.getAction().contains("code=200");
 //接口返回数据:成功返回success,失败反回 fail的值。要想返回fail值 ,必须抛出异常,这里用的try...catch...,所以都只返回success的值 。这里我们在获取action的时候,通过接口自定义返回值的code来判断是否成功。
// subType 这里用来记录操作明细,type 用来记录操作的菜单,这里可以根据业务自行定义
 @LogRecord(subType = "{{#phoneRecordType==1? '查询:非催收电话联系反馈记录查询' : '查询:催收-电话催收反馈记录查询'}}", success = "{{#_ret}}", type = "{{#phoneRecordType==1? '3' : '6'}}", bizNo = "")
 public AjaxResult<List<NonTelephoneRecordOutput>> queryCollectTelephoneRecord(@RequestBody NonTelephoneRecordInput input) {
 	LogRecordContext.putVariable("phoneRecordType", Integer.valueOf(input.getPhoneRecordType()));
 }
// 我们可以放置变量,来进行三元表达的运算。
// 通过条件,存储相应的操作日志明细

使用方式

基本使用

maven 依赖添加 SDK 依赖

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

SpringBoot 入口打开开关, 添加 @EnableLogRecord 注解

tenant 是代表租户的标识,一般一个服务或者一个业务下的多个服务都写死一个 tenant 就可以

@EnableLogRecord(tenant = "com.ctfo.mccntr")
public class DeviceMaintenanceCenterApplication {
}

普通的记录日志

  • pefix:是拼接在 bizNo 上作为 log 的一个标识。避免 bizNo 都为整数 ID 的时候和其他的业务中的 ID
    重复。比如订单 ID、用户 ID 等
  • bizNo:就是业务的 ID,比如订单 ID,我们查询的时候可以根据 bizNo 查询和它相关的操作日志
  • success:方法调用成功后把 success 记录在日志的内容中
  • SpEL 表达式:其中用双大括号包围起来的(例如:{{#order.purchaseName}})#order.purchaseName
    是 SpEL 表达式。Spring 中支持的它都支持的。比如调用静态方法,三目表达式。SpEL 可以使用方法中的任何参数

其中的 #_errorMsg 是取的方法抛出异常后的异常的 errorMessage。

@LogRecordAnnotation(success = "巡检工单查询成功",fail = "巡检工单查询成功失败,失败原因:「{{#_errorMsg}}」",
        prefix = "1234", bizNo = "{{#pageQuery.userId}}")
public RestResponse<PageInfo<InspectionTaskOutput>> list(@Valid @RequestBody InspectionTaskPageQuery pageQuery) throws Exception {}

持久化日志

  1. 通过cookie可以获取前端缓存的用户相关信息
  2. 新建service实现ILogRecordService类,即可在此对数据进行存储操作。
@Service
public class DbLogRecordServiceImpl implements ILogRecordService {
    @Override
    public void record(LogRecord logRecord) {
        System.out.println("===========logRecord:{}" + JSON.toJSONString(logRecord));
        //db.insertLog() 持久化日志信息
    }
 @Override
    public List<LogRecord> queryLog(String bizKey) {
        return null;
    }

    @Override
    public List<LogRecord> queryLogByBizNo(String bizNo) {
        return null;
    }
}

参考文档

使用方式

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值