ruoyi-vue-pro 开发指南 ruoyi-vue-pro 开发指南
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 商城手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 2.x
  • 前端手册 Vue 3.x
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 商城手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben(ant-design-vue) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 商城手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 2.x
  • 前端手册 Vue 3.x
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 商城手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben(ant-design-vue) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读

    • 简介
    • 交流群
    • 视频教程
    • 功能列表
    • 快速启动(后端项目)
    • 快速启动(前端项目)
    • 接口文档
    • 技术选型
    • 项目结构
    • 代码热加载
    • 一键改包
    • 删除功能
    • 内网穿透
    • 达梦数据库专属
  • 后端手册

    • 新建模块
    • 代码生成【单表】(新增功能)
    • 代码生成【主子表】
    • 代码生成(树表)
    • 功能权限
    • 数据权限
    • 用户体系
    • 三方登录
    • OAuth 2.0(SSO 单点登录)
    • SaaS 多租户【字段隔离】
    • SaaS 多租户【数据库隔离】
    • WebSocket 实时通信
    • 异常处理(错误码)
    • 参数校验
    • 分页实现
    • 文件存储(上传下载)
    • Excel 导入导出
    • 系统日志
      • 1. 操作日志
        • 1.1 @OperateLog 注解
        • 1.2 自动记录
        • 1.3 后续优化
      • 2. 登录日志
      • 3. API 访问日志
      • 4. API 错误日志
    • MyBatis 数据库
    • MyBatis 联表&分页查询
    • 多数据源(读写分离)
    • Redis 缓存
    • 本地缓存
    • 异步任务
    • 配置管理
    • 工具类 Util
    • 单元测试
    • 分布式锁
    • 幂等性(防重复提交)
    • 数据库文档
    • 验证码
  • 中间件手册

    • 定时任务
    • 消息队列(内存)
    • 消息队列(Redis)
    • 消息队列(RocketMQ)
    • 消息队列(RabbitMQ)
    • 消息队列(Kafka)
    • 限流熔断
  • 工作流手册

    • 工作流(Flowable)会签、或签
  • 商城手册

    • 商城演示
    • 功能开启
  • 大屏手册

    • 报表设计器
    • 大屏设计器
  • 支付手册

    • 功能开启
    • 支付宝支付接入
    • 微信公众号支付接入
    • 微信小程序支付接入
    • 支付宝、微信退款接入
  • 公众号手册

    • 功能开启
    • 公众号接入
    • 公众号粉丝
    • 公众号标签
    • 公众号消息
    • 自动回复
    • 公众号菜单
    • 公众号素材
    • 公众号图文
    • 公众号统计
  • 系统手册

    • 短信配置
    • 邮件配置
    • 站内信配置
    • 数据脱敏
    • 敏感词
    • 地区 & IP 库
  • 运维手册

    • 开发环境
    • Linux 部署
    • Docker 部署
    • Jenkins 部署
    • HTTPS 证书
    • 服务监控
  • 前端手册 Vue 3.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • CRUD 组件
    • 国际化
    • IDE 调试
    • 代码格式化
  • 前端手册 Vue 2.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
  • 更新日志

    • 【v1.9.0】开发中
    • 【v1.8.3】2023-10-24
    • 【v1.8.2】2023-09-24
    • 【v1.8.1】2023-09-04
    • 【v1.8.0】2023-07-27
  • 开发指南
  • 后端手册
芋道源码
2022-03-28
目录

系统日志

项目提供 2 类 4 种系统日志:

  • 审计日志:用户的操作日志、登录日志
  • API 日志:RESTful API 的访问日志、错误日志

# 1. 操作日志

操作日志,记录「谁」在「什么时间」对「什么对象」做了「什么事情」。

打开 [系统管理 -> 审计日志 -> 操作日志] 菜单,可以看到对应的列表,如下图所示:

系统管理 -> 操作日志

操作日志的记录,由 yudao-spring-boot-starter-biz-operatelog (opens new window) 技术组件实现,OperateLogAspect (opens new window) 通过 Spring AOP 拦声明了 @OperateLog (opens new window) 注解的方法,异步记录日志。使用示例如下:

 使用示例

操作日志的存储,由 yudao-module-system 的 OperateLog (opens new window) 模块实现,记录到数据库的 system_operate_log (opens new window) 表。

# 1.1 @OperateLog 注解

@OperateLog 注解,一共有 6 个属性,如下图所示:

 属性

  • module 属性:操作模块,例如说:用户、岗位、部门等等。为空时,默认会读取类上的 Swagger @Tag 注解的 name 属性。
  • name 属性:操作名,例如说:新增用户、修改用户等等。为空时,默认会读取方法的 Swagger @Operation 注解的 summary 属性。
  • type 属性:操作类型,在 OperateTypeEnum (opens new window) 枚举。目前有 GET 查询、CREATE 新增、UPDATE 修改、DELETE 删除、EXPORT 导出、IMPORT 导入、OTHER 其它,可进行自定义。

# 1.2 自动记录

操作日志往往记录的是针对某个对象的写操作,所以针对 POST、PUT、DELETE 等写请求,yudao-spring-boot-starter-biz-operatelog 组件会自动记录操作日志。

  • 基于请求方法,转换出对应的 type 操作方法:POST 对应 CREATE 类型,PUT 对应 UPDATE 类型,DELETE 对应 DELETE 类型,其它对应 OTHER 类型。
  • 基于 Swagger 注解,转换出对应的 module 操作模块、name 操作名。

因此,绝大多数 RESTful API 对应的方法,无需添加 @OperateLog 注解。例如说:

 属性

一般来说,只有两种场景需要添加 @OperateLog 注解。

① 场景一:需要自定义 @OperateLog 注解的属性。例如说:

 自定义属性

② 场景二:不想自动记录操作日志。例如说:

 自定义属性

# 1.3 后续优化

yudao-spring-boot-starter-biz-operatelog 组件目前提供的是轻量级的操作日志的解决方案,暂时未提供很好的记录操作对应、操作明细、拓展字段的能力。例如说:

牛皮的操作日志示例

  • 【新增】2021-09-16 10:00 订单创建,订单号:NO.11089999,其中涉及变量订单号 “NO.11089999”
  • 【修改】2021-09-16 10:00 用户小明修改了订单的配送地址:从 “金灿灿小区” 修改到 “银盏盏小区”

未来,艿艿会引入老友开源的 https://github.com/mouzt/mzt-biz-log (opens new window) 操作日志组件,优化项目的操作日志功能。大家记得给个 Star 哟!

目前,如果要记录具体的操作明细、拓展字段,可以调用 OperateLogUtils (opens new window) 的静态方法,代码如下:

OperateLogUtils

# 2. 登录日志

登录日志,记录用户的登录、登出行为,包括成功的、失败的。

打开 [系统管理 -> 审计日志 -> 登录日志] 菜单,可以看对应的列表,如下图所示:

系统管理 -> 登录日志

登录日志的存储,由 yudao-module-system 的 LoginLog (opens new window) 模块实现,记录到数据库的 system_login_log (opens new window) 表。

登录类型通过 LoginLogTypeEnum (opens new window) 枚举,登录结果通过 LoginResultEnum (opens new window) 枚举,都可以自定义。代码如下:

系统管理 -> 登录日志

# 3. API 访问日志

API 访问日志,记录 API 的每次调用,包括 HTTP 请求、用户、开始时间、时长等等信息。

打开 [基础设施 -> API 日志 -> 访问日志] 菜单,可以看对应的列表,如下图所示:

系统管理 -> 访问日志

访问日志的记录,由 yudao-spring-boot-starter-web (opens new window) 技术组件实现,通过 ApiAccessLogFilter (opens new window) 过滤 RESTful API 请求,异步记录日志。

访问日志的存储,由 yudao-module-infra 的 AccessLog (opens new window) 模块实现,记录到数据库的 infra_api_access_log (opens new window) 表。

# 4. API 错误日志

API 错误日志,记录每次 API 的异常调用,包括 HTTP 请求、用户、异常的堆栈等等信息。

打开 [基础设施 -> API 日志 -> 错误日志] 菜单,可以看对应的列表,如下图所示:

系统管理 -> 错误日志

错误日志的记录,由 yudao-spring-boot-starter-web (opens new window) 技术组件实现,通过 GlobalExceptionHandler (opens new window) 拦截每次 RESTful API 的系统异常,异步记录日志。

GlobalExceptionHandler

错误日志的存储,由 yudao-module-infra 的 ErrorLog (opens new window) 模块实现,记录到数据库的 infra_api_error_log (opens new window) 表。

Excel 导入导出
MyBatis 数据库

← Excel 导入导出 MyBatis 数据库→

Theme by Vdoing | Copyright © 2019-2023 芋道源码 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×