Skip to content

Latest commit

 

History

History
130 lines (95 loc) · 4.25 KB

README.md

File metadata and controls

130 lines (95 loc) · 4.25 KB

操作日志

img.png

此版本操作日志主要就是通过AOP拦截器实现的,整体主要分为AOP拦截器、自定义函数、日志上下文、扩展接口;组件提供了6个扩展点,自定义函数、日志上下文、用户信息获取,日志保存,自定义异常获取,入参过滤,业务可以根据自己的业务特性定制符合自己业务的逻辑。

1. 注解

注解 含义
@LogRecordFunction SpEL自定义函数扩展
@LogRecordAnnotation 记录操作日志

2. @LogRecordAnnotation(声明记录操作日志)

字段 是否必填 含义 EL表达式
bizCode 业务编码
msg 日志描述
result 操作结果,默认【成功/(失败:errMsg)】,填写后(成功)替换为(填写值)
fileId 文件ID,可配置在注解上或者配置到上下文中
bizId 批次ID,可配置在注解上或者配置到上下文中
param 操作说明,默认为入参,填写后为(填写值)+入参
extra 任意值

3. @LogRecordFunction(声明SpEL自定义函数)

字段 是否必填 含义
value 函数名称

函数名称示例

类@LogRecordFunction 方法@LogRecordFunction 函数名称
value="class" value="method" class_method
value="" value="method" method
value="class" value="" class_方法名称
value="" value="" 方法名称

4. LogRecordContext,操作日志上下文

例如文件ID,操作ID有些时候,入参不方便获取,可以在方法中放入日志上下文中。

/**
 * 文件ID
 */
public static final String CONTEXT_KEY_NAME_FILE_ID = "fileId";
/**
 * 批次ID
 */
public static final String CONTEXT_KEY_NAME_BATCH_ID = "batchId";
LogRecordContext.putVariable(LogRecordContext.CONTEXT_KEY_NAME_FILE_ID,"123")

5. IOperatorGetService,扩展接口

public interface IOperatorGetService {

    /**
     * 获取登录用户
     *
     * @return 用户
     */
    Object getUser();

    /**
     * 后续处理日志记录
     *
     * @param logRecordDTO 日志记录实体
     */
    void insertLogRecord(LogRecordDTO logRecordDTO);

    /**
     * 自定义通知返回值错误信息解析
     *
     * @param result result
     * @return errMsg
     */
    String customResponseError(Object result);

    /**
     * 入参过滤
     * @param args 方法参数列表
     *
     * @return 入参过滤
     */
    String paramFilter(Object[] args);

}

6. QuickStart

项目Maven地址

<dependency>
  <groupId>io.github.moyifengxue</groupId>
  <artifactId>log-record-spring-boot-starter</artifactId>
  <version>1.0.0</version>
</dependency>

GitHub地址

https://github.com/moyifengxue/log-record-spring-boot-starter

QuickStart

项目支持SpringBoot2.x以及升级后的SpringBoot3.x开箱即用,因为只是一个简单的AOP拦截器,目前无需再配置文件配置数据。

但是用户需要自己实现IOperatorGetService扩展接口,将其实现类注入到Spring容器中即可。

6.1 getUser():

一般直接返回用户项目中上下文中的用户信息即可。

6.2 insertLogRecord(LogRecordDTO logRecordDTO):

入参为logRecordDTO,即AOP拦截器获取到的数据,实现此接口进行自定义的数据存储。

6.3 customResponseError,paramFilter

此两个方法只是对result数据和param参数做一定的处理。