跳到主要内容

日志表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件系统性梳理系统日志相关表结构与设计要点,覆盖操作日志表(system_operate_log)、登录日志表(system_login_log)、API 访问日志表(infra_api_access_log)以及错误日志相关表(infra_api_error_log)。内容包括:

  • 核心字段定义、数据类型与业务含义
  • 日志级别、操作类型、请求参数、响应结果等字段的设计考量
  • 存储策略、查询优化与归档机制建议
  • 典型分析场景与查询示例
  • 系统监控与安全审计的应用方案

项目结构

日志相关表在多数据库方言中均有实现,主要分布在以下 SQL 文件中:

  • MySQL 方言:infra.sql(API 访问日志)、system.sql(系统字典等基础表)
  • PostgreSQL 方言:ruoyi-vue-pro.sql(操作日志、登录日志等)
  • SQLServer 方言:ruoyi-vue-pro.sql(操作日志、登录日志等)
  • Oracle/Kingbase/openGauss 方言:ruoyi-vue-pro.sql(操作日志、登录日志等)
  • DM8 方言:ruoyi-vue-pro-dm8.sql(登录日志等)

Mermaid Diagram Code:

graph TB
subgraph "MySQL 方言"
A["infra.sql<br/>API 访问日志"]
B["system.sql<br/>系统字典等"]
end
subgraph "PostgreSQL 方言"
C["ruoyi-vue-pro.sql<br/>操作日志/登录日志"]
end
subgraph "SQLServer 方言"
D["ruoyi-vue-pro.sql<br/>操作日志/登录日志"]
end
subgraph "其他方言"
E["Oracle/Kingbase/openGauss<br/>ruoyi-vue-pro.sql"]
F["DM8<br/>ruoyi-vue-pro-dm8.sql"]
end
A --> C
B --> C
C --> D
D --> E
D --> F

图表来源

章节来源

核心组件

本节聚焦三类日志表:操作日志、登录日志、API 访问日志,并给出字段定义与业务含义。

  • 操作日志表(system_operate_log)

    • 作用:记录用户对业务对象的操作行为,便于审计与追踪
    • 关键字段:
      • id:日志主键
      • trace_id:链路追踪编号
      • user_id/user_type:用户标识与类型
      • type/sub_type:操作模块类型与具体操作名
      • biz_id:操作数据模块编号
      • action/extra:操作内容与扩展字段
      • request_method/request_url:请求方法与地址
      • user_ip/user_agent:用户 IP 与浏览器 UA
      • create_time/update_time:创建与更新时间
      • tenant_id:租户编号
    • 设计要点:
      • 通过 type/sub_type 实现“模块-动作”的两级分类,便于统计与筛选
      • extra 用于存放结构化扩展信息,如操作前后的数据快照
      • request_* 字段便于定位问题与复现
  • 登录日志表(system_login_log)

    • 作用:记录用户登录/登出行为,支撑安全审计
    • 关键字段:
      • id/log_type:访问 ID 与日志类型
      • trace_id:链路追踪编号
      • user_id/user_type/username:用户标识
      • result:登录结果(成功/失败原因)
      • user_ip/user_agent:用户 IP 与 UA
      • create_time/update_time:创建与更新时间
      • tenant_id:租户编号
    • 设计要点:
      • result 字段映射系统字典(如登录结果枚举),便于统一展示与统计
      • 与系统字典表配合,实现结果码到文案的解耦
  • API 访问日志表(infra_api_access_log)

    • 作用:记录 API 请求的完整生命周期,便于性能分析与问题定位
    • 关键字段:
      • id:日志主键
      • trace_id:链路追踪编号
      • user_id/user_type/application_name:用户标识、类型与应用名
      • request_method/request_url/request_params/response_body:请求与响应
      • user_ip/user_agent:用户 IP 与 UA
      • operate_module/operate_name/operate_type:操作模块、名称与分类
      • begin_time/end_time/duration:请求起止时间与耗时
      • result_code/result_msg:结果码与提示
      • create_time/update_time:创建与更新时间
      • tenant_id:租户编号
    • 设计要点:
      • duration 字段用于性能分析与慢调用识别
      • request_params/response_body 为调试与取证提供依据
      • idx_create_time 索引支持按时间维度快速检索

章节来源

架构概览

日志数据在系统中的流转路径如下:

  • API 层:拦截请求,记录请求参数与上下文
  • 业务层:执行业务逻辑,产生操作日志
  • 日志层:异步写入日志表,支持批量与缓冲
  • 查询层:基于索引与分区策略进行检索与分析

Mermaid Diagram Code:

sequenceDiagram
participant Client as "客户端"
participant Gateway as "网关/控制器"
participant Biz as "业务服务"
participant Logger as "日志服务"
participant DB as "日志表"
Client->>Gateway : "HTTP 请求"
Gateway->>Logger : "记录 API 访问日志"
Gateway->>Biz : "转发请求"
Biz->>Logger : "记录操作日志"
Biz-->>Gateway : "响应结果"
Gateway-->>Client : "返回响应"
Logger->>DB : "异步写入日志表"

[此图为概念性流程图,无需图表来源]

详细组件分析

操作日志表(system_operate_log)

  • 字段与类型
    • id:bigint(主键)
    • trace_id:varchar/char(链路追踪)
    • user_id/user_type:bigint/smallint(用户标识与类型)
    • type/sub_type:varchar(模块类型与操作名)
    • biz_id:bigint(业务对象编号)
    • action/extra:varchar/text(操作内容与扩展)
    • request_method/request_url:varchar(请求方法与地址)
    • user_ip/user_agent:varchar(IP 与 UA)
    • create_time/update_time:datetime/timestamp(时间戳)
    • tenant_id:bigint(租户编号)
  • 设计考量
    • 两级分类(type/sub_type)便于统计与权限控制
    • extra 支持结构化扩展,利于审计与回溯
    • request_* 字段便于问题复现与安全分析
  • 典型查询场景
    • 按用户与时间段统计操作次数
    • 按模块类型聚合操作分布
    • 按业务对象编号查询变更历史

Mermaid Diagram Code:

erDiagram
SYSTEM_OPERATE_LOG {
bigint id PK
varchar trace_id
bigint user_id
smallint user_type
varchar type
varchar sub_type
bigint biz_id
varchar action
varchar extra
varchar request_method
varchar request_url
varchar user_ip
varchar user_agent
timestamp create_time
timestamp update_time
bigint tenant_id
}

图表来源

章节来源

登录日志表(system_login_log)

  • 字段与类型
    • id/log_type:bigint/varchar(访问 ID 与日志类型)
    • trace_id:varchar(链路追踪)
    • user_id/user_type/username:bigint/smallint/varchar(用户标识)
    • result:smallint(登录结果)
    • user_ip/user_agent:varchar(IP 与 UA)
    • create_time/update_time:datetime/timestamp(时间戳)
    • tenant_id:bigint(租户编号)
  • 设计考量
    • result 映射系统字典,统一结果码与文案
    • 支持多种登录类型(账号登录、社交登录、登出等)
    • 便于安全审计与异常登录检测
  • 典型查询场景
    • 统计某租户/用户登录趋势
    • 分析失败原因分布
    • 检测异常 IP 或 UA

Mermaid Diagram Code:

erDiagram
SYSTEM_LOGIN_LOG {
bigint id PK
bigint log_type
varchar trace_id
bigint user_id
smallint user_type
varchar username
smallint result
varchar user_ip
varchar user_agent
timestamp create_time
timestamp update_time
bigint tenant_id
}

图表来源

章节来源

API 访问日志表(infra_api_access_log)

  • 字段与类型
    • id:bigint(主键)
    • trace_id:varchar(链路追踪)
    • user_id/user_type/application_name:bigint/smallint/varchar(用户与应用)
    • request_method/request_url/request_params/response_body:varchar/text(请求与响应)
    • user_ip/user_agent:varchar(IP 与 UA)
    • operate_module/operate_name/operate_type:varchar(操作模块与分类)
    • begin_time/end_time/duration:datetime/timestamp(起止时间与耗时)
    • result_code/result_msg:int/varchar(结果码与提示)
    • create_time/update_time:datetime/timestamp(时间戳)
    • tenant_id:bigint(租户编号)
  • 设计考量
    • duration 用于性能分析与慢调用识别
    • request_params/response_body 便于调试与取证
    • idx_create_time 索引支持按时间维度快速检索
  • 典型查询场景
    • 按应用与模块统计调用量与成功率
    • 按用户与时间段分析访问行为
    • 慢查询分析与异常响应排查

Mermaid Diagram Code:

erDiagram
INFRA_API_ACCESS_LOG {
bigint id PK
varchar trace_id
bigint user_id
smallint user_type
varchar application_name
varchar request_method
varchar request_url
text request_params
text response_body
varchar user_ip
varchar user_agent
varchar operate_module
varchar operate_name
smallint operate_type
timestamp begin_time
timestamp end_time
int duration
int result_code
varchar result_msg
timestamp create_time
timestamp update_time
bigint tenant_id
}

图表来源

章节来源

错误日志表(infra_api_error_log)

  • 字段与类型
    • id:bigint(主键)
    • trace_id:varchar(链路追踪)
    • user_id/user_type/application_name:bigint/smallint/varchar(用户与应用)
    • request_method/request_url:varchar(请求方法与地址)
    • error_time/error_code/error_msg:timestamp/int/varchar(错误时间、码与信息)
    • stack_trace:text(堆栈信息)
    • request_params/response_body:text(请求与响应)
    • user_ip/user_agent:varchar(IP 与 UA)
    • process_status:smallint(处理状态:未处理/已处理/已忽略)
    • create_time/update_time:datetime/timestamp(时间戳)
    • tenant_id:bigint(租户编号)
  • 设计考量
    • process_status 字段用于错误处理闭环管理
    • stack_trace 便于快速定位问题根因
    • 与 API 访问日志关联,支持问题复现
  • 典型查询场景
    • 统计错误趋势与 TOP 错误码
    • 按应用与模块分析错误分布
    • 处理状态跟踪与工单联动

Mermaid Diagram Code:

erDiagram
INFRA_API_ERROR_LOG {
bigint id PK
varchar trace_id
bigint user_id
smallint user_type
varchar application_name
varchar request_method
varchar request_url
timestamp error_time
int error_code
varchar error_msg
text stack_trace
text request_params
text response_body
varchar user_ip
varchar user_agent
smallint process_status
timestamp create_time
timestamp update_time
bigint tenant_id
}

图表来源

章节来源

依赖分析

  • 字段依赖
    • user_id/user_type 与用户体系强关联
    • operate_type/operate_module 与权限与审计策略相关
    • result/result_code 与系统字典表/错误码表关联
    • tenant_id 与多租户隔离策略相关
  • 外部依赖
    • 系统字典表(如登录结果、操作类型等)用于枚举值解释
    • 链路追踪系统(trace_id)用于跨服务串联
    • 审计与合规要求(如 GDPR、等保)对日志保留与删除策略提出约束

Mermaid Diagram Code:

graph LR
SYS_USER["系统用户表"] --> OPERATE["操作日志表"]
SYS_USER --> LOGIN["登录日志表"]
SYS_DICT["系统字典表"] --> LOGIN
SYS_DICT --> OPERATE
TRACE["链路追踪系统"] --> OPERATE
TRACE --> LOGIN
TENANT["租户表"] --> OPERATE
TENANT --> LOGIN

[此图为概念性依赖图,无需图表来源]

性能考虑

  • 写入性能
    • 批量写入与异步落库,降低事务锁竞争
    • 合理设置缓冲区大小与刷盘策略
  • 查询性能
    • 为 create_time、user_id、tenant_id 等常用过滤字段建立索引
    • 对超大表采用分区策略(按时间或租户分区)
    • 对 text 字段(如 request_params/response_body)按需存储或压缩
  • 存储成本
    • 历史数据归档至冷存储(如对象存储),保留周期遵循合规要求
    • 定期清理过期日志,控制表规模

[本节为通用指导,无需章节来源]

故障排查指南

  • 常见问题
    • 日志缺失:检查异步写入队列与消费者状态
    • 字段为空:确认请求参数与响应体序列化逻辑
    • 结果码不一致:核对系统字典映射与错误码表
  • 快速定位
    • 使用 trace_id 在链路追踪系统中串联请求链路
    • 结合 begin_time/end_time 与 duration 定位慢调用
    • 通过 user_ip/user_agent 分析异常来源

章节来源

结论

日志表作为系统可观测性的基础设施,应兼顾完整性、可查询性与成本控制。通过规范化的字段设计、合理的索引与分区策略、完善的归档与清理机制,能够有效支撑系统监控、安全审计与问题排查等关键场景。

附录

  • 典型查询示例(示意)
    • 统计某租户近 7 天登录次数
    • 查询某用户在指定时间段内的操作明细
    • 分析 API 调用成功率与慢调用 TopN
    • 统计错误码分布并标记处理状态
  • 最佳实践
    • 严格区分日志级别(登录、操作、访问、错误)
    • 保护敏感字段(如请求参数中的密码),必要时脱敏
    • 制定日志保留策略与合规审查流程
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答