ログ設計指針#
1. 出力形式#
ログの集約と解析を容易にするため、全てのログを JSON形式 で標準出力(stdout)に出力する。
2. ログレベル#
| レベル | 説明 |
|---|---|
| FATAL | システム停止を伴う致命的なエラー。即時通知対象。 |
| ERROR | 継続は可能だが、期待しない動作が発生したエラー。要調査。 |
| WARN | 異常ではないが、リトライが発生した際やリソース不足の予兆など。 |
| INFO | 業務上の重要なイベント(ファイルアップロード完了等)。 |
| DEBUG | 開発時のデバッグ情報。本番環境では出力しない。 |
3. 共通ログ項目#
全てのログには以下のフィールドを必須または推奨で含める。
timestamp: ISO8601形式の時刻level: ログレベルtrace_id: リクエスト間を横断して追跡するためのユニークなID(相関ID)request_id: 単一操作を識別するためのユニークなID(冪等性制御・キャンセル用)user_id: ユーザー識別子(MVPでは対象外とし、nullまたは固定値を出力する)message: ログの内容(人間が読める形式)context: 関連する補足データ(メタデータ)
4. 追跡可能性(Observability)#
- モノレポ内の各サービス間で
X-Trace-Idヘッダーを伝播させ、フロントエンドからバックエンドまでの処理を単一のトレースIDで追跡可能にする。 X-Request-Idヘッダーも併せて伝播させ、単一操作のログを特定して追跡可能にする。
5. ログ出力の禁止事項 (PIIの保護)#
以下の情報は、セキュリティおよびプライバシー保護のため、ログに出力してはならない。
- パスワード、アクセストークン、シークレットキー
- クレジットカード情報
- 個人情報(氏名、生年月日、住所、電話番号等)を直接特定できる情報
- 必要がある場合はハッシュ化またはマスキング処理(例:
k****@example.com)を行う。
- 必要がある場合はハッシュ化またはマスキング処理(例:
6. ログの保存とモニタリング#
- 保存期間: 運用要件に基づき、30日間(またはそれ以上)を標準とする。
- 監視: ERROR以上のログが発生した場合、Slack等のチャットツールへ通知を行う。