访问日志
每一次后端 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 再搜索,列表只剩处理失败的请求——配合「操作结果」列的红色失败消息,可以快速圈定问题接口。

导出留档
点击 导出 → 确认「是否确认导出数据项?」→ 浏览器下载 API 访问日志.xls,内容为当前查询条件下的全部记录(不是仅当前页)。
视角对照
| 视角 | 能看到什么 |
|---|---|
| 租户管理员 | 本租户全部用户的访问日志;用户类型「管理员」的记录占多数 |
| 超级管理员 | 全平台记录,含各租户与会员侧(用户类型「会员」)调用 |
无 export 权限的角色 | 列表与详细可用,导出按钮不显示 |
进阶
- 和错误日志配对使用:同一次请求若抛了异常,会同时出现在访问日志(结果码非 0)与错误日志(含异常堆栈)。先看访问日志定接口,再去错误日志看堆栈。
- 执行时长排序排查慢接口:用「执行时长」填阈值(如
500)过滤慢请求,再拿请求地址去 MySQL 监控 的 SQL 监控核对是否慢 SQL 所致。 - 链路追踪对齐日志文件:详情里的 traceId 与后端日志文件中的同名字段一致,可跨「界面 → 日志文件」追同一次请求。
- 日志不会无限增长:后端有
AccessLogCleanJob清理任务,保留最近 14 天、单次最多删 100 条循环执行;该任务在「定时任务」页默认暂停,需要自动清理时去那里启用。 - 会员侧调用同样入库:用户类型为「会员」的记录来自 App / 会员端接口,排查 C 端问题时按此过滤。
- 结果码语义:
0成功;401未登录、403无权限、500服务端异常等,与前端弹窗错误码同源。
常见问题
列表为什么是空的? 本地环境 access-log.enable: false,后端不写访问日志(见页首 info 框)。开启开关并重启后,新请求才会入库。
开启了开关,为什么刚才的操作还是查不到? 开关只影响「开启之后」的请求;且列表按请求时间倒序,先点重置清掉残留条件再搜。
「执行时长」填 100 是什么意思? 过滤耗时 ≥ 100 ms 的请求,用于抓慢接口。
结果码 500 和错误日志有什么区别? 访问日志记「这次请求失败了」;错误日志记「失败时抛的异常和堆栈」。一条失败请求通常两边各有一条记录。
能在页面上删除日志吗? 不能。页面只提供查询 / 详细 / 导出;清理只由后端的 14 天清理任务完成。
用户类型「会员」的记录从哪来? 会员端(App / 小程序侧)接口调用,用户编号为会员 ID。
