外观
日志与审计
概述
系统管理提供两类核心审计日志,用于全程追踪「谁、在何时、做了什么、结果如何」,是安全合规与故障排查的关键依据:
- 登录日志:记录每一次登录、退出、注册、令牌刷新等认证行为,聚焦账号安全。
- 操作日志:自动记录业务接口的调用过程,覆盖请求参数、响应结果与耗时,聚焦操作留痕。
两类日志均落地在 module_system 的 log 模块,分别存储于 system_login_log 与 system_operate_log 两张表。
登录日志

记录时机
登录日志在认证链路中由 _write_login_log 同步写入,覆盖以下场景(对应 LoginLogType):
- 账号登录、社交登录、短信登录
- 用户注册、刷新令牌(Token Refresh)
- 主动退出、强制退出
无论登录成功或失败都会留痕。例如账号或密码错误、验证码不正确、用户被禁用等异常场景,都会独立记录一条失败日志,便于发现暴力破解或异常登录。
日志内容
每条登录日志包含:账号、登录类型、登录结果、用户 IP、浏览器 UA,以及由 UA 解析出的操作系统与浏览器名称,并带有链路追踪编号 trace_id 便于与网关/后端链路关联。
登录结果(LoginLogResult)以枚举值存储,常见取值:
| 结果值 | 含义 |
|---|---|
| 0 | 成功 |
| 10 | 账号或密码不正确 |
| 20 | 用户被禁用 |
| 30 / 31 | 验证码不存在 / 不正确 |
| 100 | 未知异常 |
前端页面
路径:系统管理 → 日志管理 → 登录日志(apps/web-ele/src/views/system/loginlog)。
页面以表格形式展示登录时间、账号、IP、登录结果、操作系统、浏览器,支持按账号、IP、结果筛选,并提供详情弹窗查看完整 UA 信息,以及一键导出 Excel。
操作日志

自动记录机制
操作日志无需在业务代码中手动埋点,而是通过自定义路由类 OperationLogRoute 统一拦截。凡是声明了 route_class=OperationLogRoute 的 APIRouter,其命中的请求都会在响应返回后,由后台任务异步写入操作日志。系统绝大多数业务接口(系统管理、基础设施、工作流、AI 等模块)均已启用该路由。
记录过程会顺带完成以下智能解析:
- 操作名(sub_type):取自路由的
summary,如「修改部门」。 - 操作内容(action):在动作基础上自动补充业务对象名称,如「修改部门【研发部】」。
- 业务编号(biz_id):依次从路径参数、查询参数、请求体、表单中提取主键,批量操作取首个。
- 处理时间(process_time):接口实际耗时,精确到秒。
敏感信息脱敏
出于安全考虑,写入的请求体与响应体都会经过脱敏处理。命中敏感字段名的键值会被统一替换为 ***,兼容小驼峰(oldPassword)与蛇形(old_password)两种写法。可脱敏字段通过配置 OPERATION_LOG_SENSITIVE_FIELDS 定义,默认包含 password、token、accessToken、authorization、secret 等。若请求体过长(超过 2000 字符)则仅记录「请求参数过长」提示,避免日志膨胀。
记录范围
通过配置项控制是否记录以及记录哪些请求方法:
OPERATION_LOG_RECORD:总开关,默认True。OPERATION_RECORD_METHOD:需要记录的方法集合,默认包含POST / PUT / PATCH / DELETE / HEAD / OPTIONS(即只记录写操作,不记录普通查询GET)。
当配置关闭或请求方法不在范围内时,路由直接放行,不产生任何日志开销。
查询与导出
登录日志与操作日志均提供一致的查询能力:
- 分页查询:
GET /login-log/page、GET /operate-log/page,支持按账号、IP、操作模块、请求方式、成功/失败等条件过滤。 - 详情查看:
GET /login-log/get、GET /operate-log/get。 - 导出 Excel:
GET /login-log/export-excel、GET /operate-log/export-excel,导出时枚举值(如结果、类型)会转换为中文文案。
操作日志在返回时会自动关联用户表,补全操作人昵称(无昵称时回退账号),方便审计人员直接识别责任人。
日志清理
操作日志与登录日志会持续增长,系统提供周期性清理能力:
- 清理逻辑位于
OperationLogService.cleanup_operation_log,按创建时间删除早于保留天数的数据。 - 保留天数读取系统配置
operation_log_retention_days,默认 90 天;该配置可在「基础设施 → 参数配置」中调整。 - 通常由「基础设施 → 定时任务」中的调度任务定期触发执行。
清理为物理删除,请结合合规要求谨慎设置保留天数,必要时可先导出归档再执行清理。