不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2025-08-22 17:04:20  修改时间:2025-08-25 09:27:28  分类:18.系统设计/UML建模  编辑

操作日志表用于记录系统用户的各类操作行为,是系统审计、问题排查和安全追溯的重要依据。以下是详细的表结构设计:

表基本信息

项目 详情
表名 sys_operation_log
存储引擎 InnoDB(支持事务)
字符集 utf8mb4
排序规则 utf8mb4_general_ci

字段设计

字段名 数据类型 长度 / 精度 是否主键 允许为空 默认值 字段说明
id BIGINT - 自增 日志记录唯一标识,自增主键
operation_id VARCHAR 64 操作唯一编号(可使用 UUID,用于跨系统关联)
user_id BIGINT - NULL 操作用户 ID(未登录用户可为 NULL)
username VARCHAR 50 NULL 操作用户名(冗余字段,方便查询)
operation_module VARCHAR 100 操作所属模块(如:用户管理、订单管理、系统设置)
operation_type VARCHAR 50 操作类型(如:新增、修改、删除、查询、登录、退出、导入、导出)
operation_content TEXT - NULL 操作具体内容(如:修改用户状态为禁用;删除订单 ID:20230822001)
request_method VARCHAR 20 NULL 请求方式(如:GET、POST、PUT、DELETE,接口操作时记录)
request_url VARCHAR 500 NULL 请求接口 URL(如:/api/user/update,接口操作时记录)
request_params TEXT - NULL 请求参数(JSON 格式存储,如:{"userId":1001,"status":0})
response_result VARCHAR 20 操作结果(成功、失败)
error_msg TEXT - NULL 错误信息(操作失败时记录具体异常信息,成功时为 NULL)
client_ip VARCHAR 50 操作客户端 IP 地址
client_location VARCHAR 200 NULL IP 归属地(如:北京市 阿里云,可通过 IP 解析工具获取)
client_browser VARCHAR 200 NULL 客户端浏览器(如:Chrome 116.0.0.0)
client_os VARCHAR 100 NULL 客户端操作系统(如:Windows 10)
operation_time DATETIME - 操作时间(精确到秒)
execution_time INT - 0 操作执行耗时(毫秒,接口操作时记录,非接口操作可为 0)
create_time DATETIME - CURRENT_TIMESTAMP 记录创建时间(默认当前时间)

索引设计

为提升查询效率,建议创建以下索引:

  • 主键索引PRIMARY KEY (id)(默认自动创建)
  • 普通索引INDEX idx_user_id (user_id)(按用户查询日志)
  • 普通索引INDEX idx_operation_time (operation_time)(按时间范围查询日志)
  • 联合索引INDEX idx_module_type_time (operation_module, operation_type, operation_time)(按模块、类型、时间组合查询)
  • 普通索引INDEX idx_response_result (response_result)(查询失败操作日志)

扩展说明

  1. 冗余字段设计username client_location 等冗余字段虽会增加存储,但可减少关联查询,提升日志查询效率。
  2. 大数据量处理:若系统日志量较大,建议定期(如按季度)归档历史数据至归档表(如 sys_operation_log_2023_q3),避免主表数据量过大影响性能。
  3. 敏感信息处理request_params operation_content 中若包含密码、身份证等敏感信息,需进行脱敏处理(如用 *** 替换关键字符)。
  4. 非接口操作支持:对于非接口类操作(如页面按钮点击),request_method request_url 等字段可留空或标记为 “非接口操作”。

示例数据

id operation_id user_id username operation_module operation_type operation_content client_ip response_result operation_time
1 8f7d2b1c-3e4a-5d6b-7c8d-9e0f1a2b3c4d 1001 admin 用户管理 修改 修改用户 ID:1002 的状态为禁用 192.168.1.100 成功 2025-08-22 10:30:25
2 9a8b7c6d-5e4f-3g2h-1j0k-8l7m6n5o4p3q NULL NULL 登录模块 登录 用户登录尝试 223.104.18.56 失败 2025-08-22 11:15:42

 

通过以上设计,可全面记录系统操作行为,满足审计、追溯和问题排查需求,同时兼顾查询效率和扩展性。

 

 

相关文章: