Skip to content

访问日志 ​

每一次后端 API 请求都会在这里留下一条记录:谁、在什么时候、调了哪个接口、花了多少毫秒、成功还是失败。排查「页面点了没反应」「接口为什么慢」时,第一站就是它。

功能在哪 ​

  • 菜单路径:基础设施 → API 日志 → 访问日志
  • 路由地址:/infra/log/api-access-log
  • 所需权限:infra:api-access-log:query(查询与详细)、infra:api-access-log:export(导出)

本地环境默认不记录访问日志

本地 profile(application-local.yaml)中 access-log.enable 为 false,即本地启动的后端不会写入新的访问日志——本页列表为空是正常现象,不是故障。本章截图中的 10 条为演示数据。若要让本地后端开始记录,把该开关改为 true 并重启后端即可;生产环境按各自部署配置为准。

界面认识 ​

访问日志列表

查询区 ​

条件输入方式说明
用户编号文本框(请输入用户编号)发起请求的用户 ID,如 9000050013
用户类型下拉(请选择用户类型)字典 user_type:会员 / 管理员
应用名文本框(请输入应用名)后端应用标识,如 enlev-server
请求时间日期范围(开始日期 - 结束日期)按请求发起时间过滤
执行时长文本框(请输入执行时长)单位毫秒,过滤「大于等于该值」的请求
结果码文本框(请输入结果码)0 为成功,500 等为非零错误码

右侧三个按钮:搜索、重置、导出(导出需 infra:api-access-log:export 权限,点击后确认「是否确认导出数据项?」,得到 API 访问日志.xls)。

列表列 ​

列含义
日志编号本条日志的主键,详情 dialog 里的「日志主键」即它
用户编号 / 用户类型发起人;用户类型以标签展示(管理员 / 会员)
应用名处理该请求的后端应用
请求方法 / 请求地址如 GET + /admin-api/infra/form-design/page
请求时间请求发起的时刻
执行时长后端处理耗时,形如 41 ms
操作结果成功,或失败并附错误消息(如「系统异常」)
操作模块 / 操作名接口归属的业务模块与动作名称
操作类型字典 infra_operate_type:其它 / 查询 / 新增 / 修改 / 删除 / 导出 / 导入
操作详细:打开详情 dialog

常用操作 ​

看一条请求的完整现场 ​

点击行内 详细,dialog 按「日志主键 → 链路追踪 → 应用名 → 用户信息 → 用户 IP → 用户 UA → 请求信息 → 请求参数 → 请求结果 → 请求时间 → 请求耗时 → 操作结果 → 操作模块 → 操作名 → 操作类型」的顺序铺开展示。

访问日志详情

其中三段最有用:

  • 请求参数:query 与 body 的原文 JSON,可直接复制去复现请求;
  • 请求结果:后端返回体原文,code 非 0 时 msg 就是前端弹的错误;
  • 链路追踪:traceId,拿去和日志文件、错误日志对齐同一次请求。

详情里有两个「操作名」?

是的,dialog 末尾连续出现两个「操作名」标签:第二个实际展示的是操作类型(查询 / 新增 / 修改……)。这是上游界面的标签笔误,读的时候按位置理解即可,不影响数据。

只挑失败请求 ​

在「结果码」填 500 再搜索,列表只剩处理失败的请求——配合「操作结果」列的红色失败消息,可以快速圈定问题接口。

结果码 500 过滤

导出留档 ​

点击 导出 → 确认「是否确认导出数据项?」→ 浏览器下载 API 访问日志.xls,内容为当前查询条件下的全部记录(不是仅当前页)。

视角对照 ​

视角能看到什么
租户管理员本租户全部用户的访问日志;用户类型「管理员」的记录占多数
超级管理员全平台记录,含各租户与会员侧(用户类型「会员」)调用
无 export 权限的角色列表与详细可用,导出按钮不显示

进阶 ​

  1. 和错误日志配对使用:同一次请求若抛了异常,会同时出现在访问日志(结果码非 0)与错误日志(含异常堆栈)。先看访问日志定接口,再去错误日志看堆栈。
  2. 执行时长排序排查慢接口:用「执行时长」填阈值(如 500)过滤慢请求,再拿请求地址去 MySQL 监控 的 SQL 监控核对是否慢 SQL 所致。
  3. 链路追踪对齐日志文件:详情里的 traceId 与后端日志文件中的同名字段一致,可跨「界面 → 日志文件」追同一次请求。
  4. 日志不会无限增长:后端有 AccessLogCleanJob 清理任务,保留最近 14 天、单次最多删 100 条循环执行;该任务在「定时任务」页默认暂停,需要自动清理时去那里启用。
  5. 会员侧调用同样入库:用户类型为「会员」的记录来自 App / 会员端接口,排查 C 端问题时按此过滤。
  6. 结果码语义:0 成功;401 未登录、403 无权限、500 服务端异常等,与前端弹窗错误码同源。

常见问题 ​

列表为什么是空的? 本地环境 access-log.enable: false,后端不写访问日志(见页首 info 框)。开启开关并重启后,新请求才会入库。

开启了开关,为什么刚才的操作还是查不到? 开关只影响「开启之后」的请求;且列表按请求时间倒序,先点重置清掉残留条件再搜。

「执行时长」填 100 是什么意思? 过滤耗时 ≥ 100 ms 的请求,用于抓慢接口。

结果码 500 和错误日志有什么区别? 访问日志记「这次请求失败了」;错误日志记「失败时抛的异常和堆栈」。一条失败请求通常两边各有一条记录。

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

用户类型「会员」的记录从哪来? 会员端(App / 小程序侧)接口调用,用户编号为会员 ID。

相关页面 ​