Skip to content

错误日志 ​

后端接口抛出异常时,异常的完整现场(请求参数、异常类名、堆栈)会落到这里。访问日志告诉你「哪个接口失败了」,错误日志告诉你「为什么失败」。

功能在哪 ​

  • 菜单路径:基础设施 → 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 权限的角色能查询与看详细,但行内没有已处理 / 已忽略按钮

进阶 ​

  1. 三态是一条值班流水线:未处理 → 已处理 / 已忽略。团队约定「每天清一遍未处理」时,用处理状态 = 未处理 + 异常时间 = 昨天 作为当日清单。
  2. 和访问日志互查:详情里的请求信息(方法 + 地址)与请求参数,可直接回 访问日志 按结果码非 0 过滤找到同一次请求,看它的执行时长与操作结果。
  3. 按异常名归类:同一个异常名反复出现通常是同一根因(如数据源配置错误、对象存储连不通)。先按异常名读一条堆栈,再决定是否批量登记。
  4. 用户 IP 为 0:0:0:0:0:0:0:1 表示请求来自本机(IPv6 回环),多见于脚本或自动化调用;UA 含 HeadlessChrome 则多为无头浏览器发起。
  5. 日志不会无限增长:后端 ErrorLogCleanJob 保留最近 14 天、单次最多删 100 条循环执行;在「定时任务」页默认暂停,需要自动清理时去启用。
  6. 链路追踪为空是正常的:未开启链路追踪部署时该字段留空,不影响堆栈阅读。

常见问题 ​

为什么行内没有「已处理 / 已忽略」按钮? 该条已登记过(处理状态为已处理 / 已忽略),或当前账号缺少 infra:api-error-log:update-status 权限。

标记错了能改回来吗? 不能撤销回未处理。确需纠正时,以查询过滤 + 导出留档的方式说明,或等待 14 天清理后自然消失。

异常名太长看不懂? 看最后一段类名即可:MyBatisSystemException 多为 SQL / 映射问题,Aws 开头多为对象存储连接问题,springframework 开头多为框架层校验或注入问题;细节以堆栈的最后一个 Caused by 为准。

和访问日志的结果码 500 是一回事吗? 同一次请求的两面:访问日志记请求维度的失败,错误日志记异常维度的堆栈。有堆栈可看时优先来本页。

列表里的异常会影响用户吗? 会——对应请求的返回码非 0,前端会弹错误提示。处理状态只是内部登记,不改变用户侧表现。

能在页面上删除错误日志吗? 不能。页面只提供查询 / 详细 / 登记 / 导出;清理由后端 14 天清理任务完成。

相关页面 ​