返回知识库

调试与质量 · 运行证据

结构化日志Structured Logging

结构化日志用固定字段记录一次请求:同一个 requestId 串起事件,密码只记字段不记值。

先看见这次登录失败,再让同一 requestId 串起三行

左边是出问题的登录页,右边是这次请求的日志流。重放后三条共用 req-7f2;把密码写成明文时,泄漏标在那一行上。

第 0 步 · 打开工具先打开日志汇聚或终端。浏览器里可用 Console(F12 / ⌘⌥I)对照同一 requestId
NOVA ACCOUNT登录
邮箱ada@studio.test
密码留空
!

点登录没反应同一空密码、同一请求,才能对照日志

logs
等待这次请求
等待 req-7f2重放登录后,同一 requestId 会串起开始、校验和响应。

还不能追查先触发同一空密码登录。原因:结构化日志记录的是这一次请求,不是随便几行文本。

结构化日志用固定字段记录一次请求。requestId 和脱敏摘要长在行上;明文密码出现就要立刻改回字段名并重放。

知识点:固定字段,按一次请求追查

上面的工作台已经演示了核心关系,这里只给可复用的命名。

  • ts、level、event、requestId 是筛选键,不是装饰。
  • 一次失败要用同一个 requestId 串起开始、校验和响应。
  • 密码、token、Cookie 只记字段是否存在;发现明文立刻改写重放。

什么时候用、怎么用

需要在生产里按一次请求追查,或把 Console 里的临时输出变成可筛选证据时用结构化日志。

  • 入口:服务端看终端或日志汇聚;浏览器可用 Console 对照同一 requestId。
  • 最短路径:触发同一请求 → 按 requestId 筛 → 读 level/event → 确认无明文。
  • 不要只打一整句自然语言;字段不稳就无法关联错误追踪和链路追踪。

正反例:同一 422,只改日志能不能串起来

目标都是解释这次空密码登录。差别在于三行能不能被同一个 id 找回,以及有没有泄密。

正例req-7f2 贯穿三行,密码只记 missing

按 requestId 和 ERROR 就能定位 422,且没有把凭据落盘。

反例各写各的句子,或 password=hunter2

无法筛选同一次失败;明文密码进日志后,这次追查本身变成事故。

快速自测

线上登录偶发 422,你只看到一句「校验失败」。下一步最该补什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。