# 日志记录约定

> 日志级别类别

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

etcd 使用 [zap][zap] 库记录应用程序输出，输出按 *级别* 进行分类。日志消息的级别依据以下约定确定：

* DebugLevel 日志通常非常庞大，通常在生产环境中禁用。
  * 示例：
    * 向远程对等成员发送一条普通消息
    * 将日志条目写入磁盘

* InfoLevel 为默认的日志优先级。
  * 示例：
    * 启动配置
    * 开始创建快照
    * 向集群中添加新节点
    * 向认证子系统中添加新用户

* 警告级别日志比信息级别日志更为重要，但无需逐条人工审查。
  * 示例：
    * 无法向远程对等成员发送 Raft 消息
    * 在配置的选举超时时间内未收到心跳消息

* ErrorLevel 日志为高优先级。若应用程序运行正常，不应产生任何 ErrorLevel 日志。
  * 示例：
    * WAL 无法分配磁盘空间

* PanicLevel 会记录一条消息，然后触发 panic。
  * 示例：
    * Raft 消息编码失败

* FatalLevel 会记录一条消息，然后调用 os.Exit(1)。
  * 示例：
    * Raft 快照保存失败

[zap]: https://github.com/uber-go/zap
