第6章:ログ設計が出発点
この章で分かること
- なぜ「AIの前にログ」なのか
- 最低限そろえたい項目と、無いときに起きる症状
- severity / event code / stacktrace / 相関ID の実務ルール
- PII・秘密を書かないためのチェック
- 導入前に潰すべきアンチパターン
たとえ話
防犯カメラが真っ暗だと、優秀な捜査官(AI)でも追えません。
起点記事も「error定義とstacktraceが入口」と結論しています [S02]。OWASPも目的に沿った一貫ログを勧めています [S07]。
観測の入口が崩れていると、監視もAIも止まります。ログ改修は地味ですが、AI予算より先に効く投資です。
1. AI導入前に直す9項目
- 画面メッセージと内部ログを分ける(画面にstacktraceを出さない)
- 例外を握りつぶさない
- error / warn / info の基準表を作る
- event code を付ける
- 構造化する(JSON等)
- PII・秘密・APIキーを書かない [S07]
- trace_id / request_id をサービス間で運ぶ [S03]
- version / commit を残す
- 時刻をタイムゾーン付きで揃える
2. 良い例/悪い例
同じ失敗でも、残す情報が違う
悪い例: ERROR failed user=hanako@example.com よい例: timestamp, service, version, severity=error, event_code=ORDER_CREATE_FAILED, trace_id, user_hash, exception_type, stacktrace
3. 項目が無いと誰が困るか
| 欠落 | 症状 | 困る人 |
|---|---|---|
| stacktrace | 原因コードに辿れない | 開発、AI修復 |
| trace_id | サービス横断ができない | 運用、SE |
| version | デプロイ相関が検証できない | 運用、PM |
| severity基準 | アラートが泣く/沈黙 | 運用 |
| PIIマスク | AI経路で漏洩 | 全員、特にセキュ |
4. severity の決め方(例)
| レベル | 意味(例) | 通知 |
|---|---|---|
| error | ユーザー影響またはデータリスクが眼前 | 即時の候補 |
| warn | 劣化の兆候。放置するとerror化しうる | 集約・勤務時間など |
| info | 正常系の節目。探索用 | 原則ページしない |
運用担当者severity定義を監視ルールと揃える
PG空catch・stack捨て・PII出力をレビューで弾く [S02]
SE例外処理・ログ出力・マスキングの設計基準を整備する [S02]
PMログ改修を「AI前提の必須」としてスケジュールする
経営層AI予算の一部を観測品質に回す判断をする
5. 現場適用:1スプリント改修パック
- 主要APIのerrorに version と trace_id を必須化
- 空catchをlintで禁止
- severity定義をWikiに1枚置く
- PIIサンプルをログ検索で1回監査する
ふりかえり
- 最近のerrorに version と trace_id があるか
- PIIが平文で混ざっていないか
- severity基準表がチームで共有されているか