日志查看器
日志页展示每个 API 请求的完整记录:客户端请求、上游转发、响应、错误详情。支持实时流式推送、持久化存储和日志体查看。
入口:控制台 → 日志(admin、normal_user、monitor 均可见)。
日志体存储的字段参考与环境变量见 日志与日志体存储。
日志列表
列表展示最近的请求记录,每条包含:
| 字段 | 说明 |
|---|---|
| 时间 | 请求时间戳 |
| 模型 | 请求的模型名;模型名前可挂标签标识路由来源(见下) |
| 状态码 | 上游响应状态码 |
| 延迟 | 总耗时(毫秒) |
| 用户 | 访问密钥名(未认证显示 anonymous) |
| 输入 Token | prompt token 数 |
| 输出 Token | completion token 数 |
模型列的标签:
| 标签 | 含义 |
|---|---|
MM | 该请求的模型名经身份作用域模型映射规则改写(访问密钥/组的 model_mappings)。tooltip 显示 原名 → 映射名。若同时命中负载均衡或脚本改路,MM 与对应标签叠加显示 |
LB | 该请求经负载均衡虚拟路由派发到某上游节点 |
SW | 该请求的上游模型被脚本 context.useModel() 改路 |
普通请求无标签。MM 与 LB/SW 可叠加(MM 在前);LB 与 SW 互斥(脚本改路优先)。
日志详情
点击某条日志展开详情,包含完整的请求/响应生命周期:
| 标签 | 内容 |
|---|---|
| 概览 | 请求 ID、模型、上游 URL、状态码、延迟、token 用量、访问密钥名/组;模型映射 / 负载均衡信息条(命中时展示) |
| 客户端请求 | 请求头(敏感值脱敏)+ 请求体 |
| 上游请求 | 转换后的请求头 + 请求体(发给上游的实际内容) |
| 上游响应 | 响应状态码 + 响应头 + 响应体 |
| 错误 | 4xx/5xx 时的错误详情(截断至 512 字节) |
通知(Notification)
日志详情页顶部展示该请求的特殊通知,例如:
- script_use_model_swap(
SW):该请求的上游模型是脚本经context.useModel切换的,非客户端原始请求的模型。这是管理员配置的内部改路,目标不过模型访问控制。
注意 SW 与模型列的 MM 是两种机制:MM 表示身份映射把客户端发的模型名按访问密钥/组的映射规则改写(见 身份作用域模型映射配置);SW 表示脚本改路。两者可同时出现在同一请求上。
实时日志(SSE 流)
控制台右上角有 Live 日志开关。打开后,所有请求实时推送到浏览器:
- 使用 SSE(Server-Sent Events)传输
- 包含所有请求(401/429 早期失败、内部端点、控制台路由)
- 未认证请求显示
user: "anonymous" - 多实例部署时(Redis 模式),汇聚所有实例的请求日志
关闭 Live 时是轮询刷新;打开时是实时推送。
过滤与搜索
日志页支持以下过滤方式:
| 过滤方式 | 说明 |
|---|---|
| 时间范围 | 选择起止时间 |
| 模型 | 按模型名过滤 |
| 状态码 | 按响应状态码过滤(2xx/4xx/5xx) |
| 访问密钥 | 按密钥名过滤 |
| 搜索 | 按请求 ID 或其他关键字搜索 |
请求 ID 关联
每个请求都有唯一的 z-request-id 头(格式 <iso8601>-<uuid4>),该 ID:
- 在请求进入处理流程前注入到请求头
- 镜像到响应头返回给客户端
- 作为额外头转发给上游
- 嵌入所有结构化日志条目
在日志页搜索框输入完整请求 ID 即可定位特定请求。详见 导出账单 Excel 与日志排查。
常见问题
Q:日志列表是实时的吗? 打开 Live 开关后是实时推送(SSE)。关闭 Live 时是轮询刷新。
Q:为什么日志里的 body 被截断了?logging.max_body_size_mb 限制了每个 body 的捕获大小(默认 25 MB)。大 body(如长对话、大型 embedding 请求)会被截断。调大此值可捕获更多,但增加内存和磁盘开销。详见 日志与日志体存储。
Q:流式请求的响应体在哪看? 流式响应的 body 在流结束后由后台任务记录。如果流异常中断(客户端断连),body 可能不完整(标记 body_incomplete)。
Q:日志太多,磁盘快满了怎么办? 调小 log_retention_days(如 3 天)加速清理;调小 stream_body_max_disk_mb 减少流式 body 磁盘占用。详见 日志与日志体存储。
Q:normal_user 能看别人的日志吗? 日志页对所有角色可见。normal_user 能看到所有请求日志,但只能管理自己创建的访问密钥。
Q:日志和审计日志有什么区别? 日志(本章)记录每次 API 调用的请求/响应;审计日志(审计与安全配置)记录控制台配置变更(增/删/改)。两者互补。
