首页/开发/代码质量与评审速查/评审检查项:日志与可观测性
代码评审64 条

评审检查项:日志与可观测性

日志评审:关键路径是否有可诊断日志、级别是否恰当、是否避免敏感信息、监控指标与告警是否需要同步更新。

日志与可观测性看什么

日志评审的判断标准只有一条:深夜被叫起来时,能不能靠现有信息定位问题。落到检查项上就是关键路径是否留下可追踪的记录(含请求标识与关键参数)、级别是否恰当、是否避免写入敏感信息,以及新功能是否需要同步补充监控指标与告警。

基本信息

关键路径成功与失败都要有可定位的日志,含请求标识
级别使用可恢复问题用警告级别,避免全部堆在信息级别
敏感信息日志与错误信息中不带密码、令牌与完整个人信息
指标联动新功能是否需要新增监控指标与告警规则

逐项看什么

  • 失败路径是否有日志,且能看出失败原因与关键参数。
  • 日志级别是否恰当:正常流程用信息级,异常可恢复用警告级,致命错误用错误级。
  • 是否打印了完整请求体或响应体:个人信息与凭据容易在这里泄漏。
  • 重试与降级是否有记录:静默重试会让问题难以复盘。
  • 是否需要新增指标:调用量、失败率、耗时分位是否被观测。
  • 日志是否可关联:同一请求在多服务间能否靠标识串起来。

常见日志问题

问题后果
关键路径无日志线上问题只能靠复现,排障时间成倍增加
全部使用信息级别真实告警被淹没在噪声里
打印完整对象个人信息与凭据流入日志系统
日志缺少标识一次请求跨多个服务时无法串联
重试不记录放大故障的行为完全不可见

日志写法对照

日志写法对照
# 差:无法定位
log.info("处理完成");

# 好:带标识与关键参数
log.info("订单处理完成 orderId={} userId={} cost={}ms", orderId, userId, cost);

# 失败路径:包含原因,且不输出敏感字段
log.warn("订单处理失败 orderId={} reason={}", orderId, reason);
# 注意:不要打印完整请求体、令牌与身份证件类字段
用「深夜被叫醒能否定位」检验日志质量:缺日志的代码上线即等于盲飞。
新功能上线通常需要配套指标与告警:没有观测手段的改动,出问题时只能等用户反馈。

易错点

  • 关键路径没有日志:线上问题只能靠复现,排障成本高。
  • 日志打印完整请求体:个人信息与凭据流入日志系统,形成新的风险面。
  • 所有日志都用同一级别:告警无法区分轻重,团队逐渐忽略提醒。
  • 重试与降级静默执行:放大故障或被掩盖的问题在事后无从复盘。

数据来源与参考

  • Google SRE 手册(监控与日志实践)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌