错误日志
后端接口抛出异常时,异常的完整现场(请求参数、异常类名、堆栈)会落到这里。访问日志告诉你「哪个接口失败了」,错误日志告诉你「为什么失败」。
功能在哪
- 菜单路径:基础设施 → API 日志 → 错误日志
- 路由地址:
/infra/log/api-error-log - 所需权限:
infra:api-error-log:query(查询与详细)、infra:api-error-log:update-status(标记已处理 / 已忽略)、infra:api-error-log:export(导出)
界面认识

查询区
| 条件 | 输入方式 | 说明 |
|---|---|---|
| 用户编号 | 文本框(请输入用户编号) | 触发异常的请求发起人 |
| 用户类型 | 下拉(请选择用户类型) | 字典 user_type:会员 / 管理员 |
| 应用名 | 文本框(请输入应用名) | 后端应用标识,如 enlev-server |
| 异常时间 | 日期范围(开始日期 - 结束日期) | 按异常发生时间过滤 |
| 处理状态 | 下拉(请选择处理状态) | 未处理 / 已处理 / 已忽略 |
按钮:搜索、重置、导出(确认「是否确认导出数据项?」后得到 异常日志.xls)。
列表列
在「序号 / 日志编号 / 用户编号 / 用户类型 / 应用名 / 请求方法 / 请求地址」之后,是与访问日志不同的四列:
| 列 | 含义 |
|---|---|
| 异常发生时间 | 异常抛出的时刻 |
| 异常名 | 异常类的全限定名,如 org.mybatis.spring.MyBatisSystemException |
| 处理状态 | 未处理 / 已处理 / 已忽略,以标签展示 |
| 操作 | 详细;处理状态为「未处理」时另有 已处理、已忽略 两个登记按钮 |
已处理 / 已忽略按钮只出现一次
一条日志被登记后,处理状态离开「未处理」,行内就不再显示这两个按钮——登记动作不可重复、也不可撤销回未处理。要复查历史登记,用查询区的「处理状态」过滤。
常用操作
看异常堆栈
点击 详细,dialog 顶部有全屏按钮,建议点开全屏读堆栈。字段顺序:日志主键 → 链路追踪 → 应用名 → 用户编号 → 用户 IP → 用户 UA → 请求信息 → 请求参数 → 异常时间 → 异常名 → 异常堆栈;若该条已被登记,还会追加处理人与处理时间。

异常堆栈是只读文本域,内容即后端日志里的完整 stacktrace。读法自上而下:第一行是异常类与消息,其后 at ... 是调用栈,出现 Caused by: 时真正的原因在最后一个 Caused by 段落。
登记处理结果
值班排查完毕后,在行内点 已处理(确认「确认标记为已处理?」)或 已忽略(确认「确认标记为已忽略?」),成功后弹出与动作同名的提示。登记后处理人 / 处理时间写入详情,供后续追溯。
- 已处理:问题已修复或已答复,异常闭环;
- 已忽略:已知且接受的问题(如外部依赖抖动),不再跟进。
导出留档
点击 导出 → 确认「是否确认导出数据项?」→ 下载 异常日志.xls,内容为当前查询条件下的全部记录。
视角对照
| 视角 | 能看到什么 |
|---|---|
| 租户管理员 | 本租户请求触发的异常;截图视角即此,54 条中既有本租户用户(编号 9000050013)也有平台级调用(编号 1) |
| 超级管理员 | 全平台异常记录 |
无 update-status 权限的角色 | 能查询与看详细,但行内没有已处理 / 已忽略按钮 |
进阶
- 三态是一条值班流水线:未处理 → 已处理 / 已忽略。团队约定「每天清一遍未处理」时,用处理状态 = 未处理 + 异常时间 = 昨天 作为当日清单。
- 和访问日志互查:详情里的请求信息(方法 + 地址)与请求参数,可直接回 访问日志 按结果码非 0 过滤找到同一次请求,看它的执行时长与操作结果。
- 按异常名归类:同一个异常名反复出现通常是同一根因(如数据源配置错误、对象存储连不通)。先按异常名读一条堆栈,再决定是否批量登记。
- 用户 IP 为
0:0:0:0:0:0:0:1表示请求来自本机(IPv6 回环),多见于脚本或自动化调用;UA 含HeadlessChrome则多为无头浏览器发起。 - 日志不会无限增长:后端
ErrorLogCleanJob保留最近 14 天、单次最多删 100 条循环执行;在「定时任务」页默认暂停,需要自动清理时去启用。 - 链路追踪为空是正常的:未开启链路追踪部署时该字段留空,不影响堆栈阅读。
常见问题
为什么行内没有「已处理 / 已忽略」按钮? 该条已登记过(处理状态为已处理 / 已忽略),或当前账号缺少 infra:api-error-log:update-status 权限。
标记错了能改回来吗? 不能撤销回未处理。确需纠正时,以查询过滤 + 导出留档的方式说明,或等待 14 天清理后自然消失。
异常名太长看不懂? 看最后一段类名即可:MyBatisSystemException 多为 SQL / 映射问题,Aws 开头多为对象存储连接问题,springframework 开头多为框架层校验或注入问题;细节以堆栈的最后一个 Caused by 为准。
和访问日志的结果码 500 是一回事吗? 同一次请求的两面:访问日志记请求维度的失败,错误日志记异常维度的堆栈。有堆栈可看时优先来本页。
列表里的异常会影响用户吗? 会——对应请求的返回码非 0,前端会弹错误提示。处理状态只是内部登记,不改变用户侧表现。
能在页面上删除错误日志吗? 不能。页面只提供查询 / 详细 / 登记 / 导出;清理由后端 14 天清理任务完成。
