日志规范

日志级别分类

etcd 使用 zap 库来记录分类为级别的应用程序输出日志。日志消息的级别遵循以下约定确定:

  • DebugLevel 日志通常数量较多,在生产环境中通常被禁用。

    • 示例:
      • 向远程对等节点发送普通消息
      • 将日志条目写入磁盘
  • InfoLevel 是默认的日志优先级。

    • 示例:
      • 启动配置
      • 开始进行快照
      • 向集群中添加新节点
      • 向认证子系统中添加新用户
  • WarnLevel 日志比 Info 更重要,但不需要人工逐一审查。

    • 示例:
      • 无法向远程对等节点发送 Raft 消息
      • 在配置的选举超时时间内未收到心跳消息
  • ErrorLevel 日志属于高优先级。如果应用程序运行正常,则不应产生任何错误级别的日志。

    • 示例:
      • 无法为 WAL 分配磁盘空间
  • PanicLevel 在记录日志消息后会触发 panic。

    • 示例:
      • 编码 Raft 消息失败
  • FatalLevel 在记录日志消息后会调用 os.Exit(1)。

    • 示例:
      • 保存 Raft 快照失败