直接跳到内容
本页目录

作者:侯金霞
更新于:4/12/2023

审计日志

简介

您可以在日志列表中查看和检索用户行为日志,用于实时审计、问题回溯分析等需求。 在系统中进行的所有操作,只要定义了日志数据,都会记录在审计日志列表中。审计日志可以根据用户的需求来定义日志的展现形式,有效的提取关键信息。审计日志能够有效的帮助用户溯源当时的操作数据,

管理日志定义

菜单路径: 系统 > 审计日志 > 日志定义列表

日志定义就是 定义用户想要记录的接口的操作历史数据,哪个接口,谁访问的,记录条件是什么,参数是什么,返回值是什么,如图所示:

1. 记录接口地址: 接口地址课通过浏览器 F12 查看请求地址,请求地址去掉域名或者 IP 就是接口的请求地址 2. 记录条件(SPEL 表达式): 当满足什么样的条件才记录数据,#{#requestBody['actionName']=='agree'} 当前请求参数中的 actionName 等于 agree,也就是同意按钮 才去记录数据

3. 业务主键获取表达式(SPEL 表达式): 获取业务主键,在日志详情中可以查看得到,#{#requestBody['taskId']},主键是 参数中 taskId

4. 记录数据获取表达式(SPEL 表达式): 获取想要记录的关键数据,#{#requestBody[data]},关键数据就是返回值的 data 数据

5. 记录日志描述模板(SPEL 表达式): 日志描述模板展示的数据, #{#currentUser.getFullName()} 审批同意流程 #{#bpmInstance.title},日志描述模板就是 当前用户 xxx 审批同意流程 xxxx

日志列表

菜单路径: 系统 > 审计日志 > 日志列表

SPEL 表达式

本系统中的审计日志 借助 SPEL 表达式来定义 记录日志的条件,提取请求参数、返回值中的数据以及定义日志的描述信息。

语法参考链接( https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html

内置变量:

  1. currentUser 当前操作用户; 示例:#{#currentUser.getFullName()}

  2. requestHeader 请求头;示例:#{#requestHeader['Referer'][0]}

  3. requestMethod 请求方式(GET,POST,PUT,DELETE);示例:#{#requestMethod}

  4. requestParam 请求参数,可通过该参数名获取到请求参数,@PathVariable 标注的参数也通过该项获取;示例:#{#requestParam["account"][0]}

  5. requestTime 请求时间;示例:#{#dateFormat(#requestTime, "yyyy-MM-dd HH:mm:ss")}

  6. requestBody 请求体,对标注@RequestBody 对象参数获取;示例:#{#requestBody["id"]}

  7. responseBody 响应结果; 示例: #{#responseBody.data}

  8. responseTime 响应时间;示例: #{#dateFormat(#responseTime, "yyyy-MM-dd HH:mm:ss")}

  9. durationMs 处理耗时毫秒;示例:#{#durationMs}

审计日志变量扩展:

为了更方便的记录关键数据,除了全局的变量,我们支持扩展审计日志变量,满足在特定的接口下获取内置的拓展变量。

使用 com.dstz.base.common.utils.AuditLogVariableUtil.setVariable(name,value)

//引入依赖
 <dependency>
    <groupId>com.dstz</groupId>
    <artifactId>ab-base-common</artifactId>
</dependency>

// 设置审计日志中所需使用变量
AuditLogVariableUtil.setVariable("bpmInstance", getActionModel().getBpmInstance());

内置函数:

  1. isEmpty 是否为空,支持字符串、object、map、collection;示例:#{#isEmpty(#requestBody['id']) ? '是' : '否'}

  2. dateFormat 日期格式化,格式:#{#dateFormat(date, datePattern)}, 示例:#{#dateFormat(#responseTime, "yyyy-MM-dd HH:mm:ss")}

  3. strContains 字符串包含,格式:#{#strContains(seq, searchSeq)}, 示例:#{#strContains(#requestHeader['Referer'][0], 'localhost') ? '是' : '否'}

审计日志 has loaded