# ログの規約

> ログレベルの分類

---

LLMSインデックス: [llms.txt](/ja/llms.txt)

---

etcdは[zap][zap]ライブラリーを使用し、アプリケーションの出力を*レベル*別に分類してログに記録します。ログメッセージのレベルは、次の規約に従って決まります。

* DebugLevelのログは通常、大量に出力されるため、本番環境では一般に無効にします。
  * 例：
    * リモートピアへの通常のメッセージの送信
    * ディスクへのログエントリーの書き込み

* InfoLevelは、デフォルトのログ優先度です。
  * 例：
    * 起動時の構成
    * スナップショット作成の開始
    * クラスターへの新しいノードの追加
    * 認証サブシステムへの新しいユーザーの追加

* WarnLevelのログはInfoより重要ですが、人が個別に確認する必要はありません。
  * 例：
    * リモートピアへのRaftメッセージの送信失敗
    * 設定された選出タイムアウト内でのハートビートメッセージの受信失敗

* ErrorLevelのログは優先度が高いログです。アプリケーションが正常に動作している場合、エラーレベルのログは出力されないはずです。
  * 例：
    * WAL用のディスク領域の割り当て失敗

* PanicLevelはメッセージをログに記録した後、パニックを発生させます。
  * 例：
    * Raftメッセージのエンコード失敗

* FatalLevelはメッセージをログに記録した後、os.Exit(1)を呼び出します。
  * 例：
    * Raftスナップショットの保存失敗

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