标准答案

  1. 错误链保留根因,日志记录操作、资源、重试和耗时等上下文。
  2. 对外错误码按客户端可处理性设计,不能把 Go panic 或数据库错误直接返回。
  3. trace ID 从入口生成或透传,HTTP、消息和后台任务要记录尝试关系。
  4. 敏感数据脱敏并控制日志级别、采样和保留周期。

题目解析

结构化日志应把操作、资源、trace/request ID、尝试次数、耗时、错误分类和版本关联起来;错误链保留根因,外部错误码按客户端可处理性统一设计。

HTTP、消息和后台任务要传播关联 ID,并区分原始操作与重试尝试。日志级别、采样和保留要兼顾排查价值、成本和隐私。

错误码是服务契约,不应由每个 handler 随意发明。对外隐藏 SQL、路径、token 和个人信息,内部日志也要脱敏和限制访问。

常见误区

  • 误区:只打印 err.Error。改正:记录错误链、操作、资源、trace、版本和安全上下文。
  • 误区:错误码由每个 handler 随意定义。改正:建立统一错误分类和映射,保持客户端可处理性。
  • 误区:日志包含 token、完整请求体和个人信息。改正:脱敏、最小化采集并设置访问和保留策略。

作者信息