按 requestId 和 ERROR 就能定位 422,且没有把凭据落盘。
调试与质量 · 运行证据
结构化日志Structured Logging
结构化日志用固定字段记录一次请求:同一个 requestId 串起事件,密码只记字段不记值。
先看见这次登录失败,再让同一 requestId 串起三行
左边是出问题的登录页,右边是这次请求的日志流。重放后三条共用 req-7f2;把密码写成明文时,泄漏标在那一行上。
第 0 步 · 打开工具先打开日志汇聚或终端。浏览器里可用 Console(F12 / ⌘⌥I)对照同一 requestId
邮箱ada@studio.test
密码留空
!
点登录没反应同一空密码、同一请求,才能对照日志
logs
等待这次请求等待 req-7f2重放登录后,同一 requestId 会串起开始、校验和响应。
结构化日志用固定字段记录一次请求。requestId 和脱敏摘要长在行上;明文密码出现就要立刻改回字段名并重放。
知识点:固定字段,按一次请求追查
上面的工作台已经演示了核心关系,这里只给可复用的命名。
- ts、level、event、requestId 是筛选键,不是装饰。
- 一次失败要用同一个 requestId 串起开始、校验和响应。
- 密码、token、Cookie 只记字段是否存在;发现明文立刻改写重放。
什么时候用、怎么用
需要在生产里按一次请求追查,或把 Console 里的临时输出变成可筛选证据时用结构化日志。
- 入口:服务端看终端或日志汇聚;浏览器可用 Console 对照同一 requestId。
- 最短路径:触发同一请求 → 按 requestId 筛 → 读 level/event → 确认无明文。
- 不要只打一整句自然语言;字段不稳就无法关联错误追踪和链路追踪。
正反例:同一 422,只改日志能不能串起来
目标都是解释这次空密码登录。差别在于三行能不能被同一个 id 找回,以及有没有泄密。
无法筛选同一次失败;明文密码进日志后,这次追查本身变成事故。
快速自测
线上登录偶发 422,你只看到一句「校验失败」。下一步最该补什么?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。