📝

metadata centric logging

📁 パターン 👁 -- 閲覧

メタデータ中心ロギング(Metadata-Centric Logging)

定義

ログに記録するのはメタデータ(誰が・いつ・どこで・どのくらい・結果は何か)に限定し、コンテンツ(ユーザー入力・LLMの出力・ファイルの中身)を含めないアプローチ。

# 悪い例(content ありのログ)
{ "user_message": "私の住所は東京都...", "llm_response": "はい、承りました..." }

# 良い例(metadata のみのログ)
{ "session_id": "abc123", "tokens_used": 342, "latency_ms": 1200, "model": "gpt-4o" }

なぜ重要か

PII(個人情報)混入リスクの低減

AIエージェントやチャットシステムでは、ユーザーの入力に氏名・住所・クレジットカード番号・医療情報などが含まれる可能性がある。ログにコンテンツを記録すると:

  • ログストレージが個人データの保管場所になり、GDPR等の規制対象になる
  • ログの閲覧権限を持つ開発者・運用者全員が個人データにアクセスできてしまう
  • ログのバックアップ・転送先(監視SaaS等)にも個人データが漏出する

ICOのデータ最小化原則(Data Minimisation)は「目的に必要な最小限のデータのみ処理する」を求めており、ログに不必要なコンテンツを残すことはこれに反する。

Canonical Completion Log パターン

1リクエスト = 1ログエントリで最終状態のみを記録するパターン。

処理の途中経過を逐次ログに書くのではなく、リクエストが完了(または失敗)した時点で、1つの構造化ログエントリを出力する。

{
  "timestamp": "2026-04-02T10:00:00Z",
  "trace_id": "abc123",
  "session_id": "xyz789",
  "duration_ms": 1450,
  "tokens_input": 512,
  "tokens_output": 128,
  "model": "gpt-4o",
  "status": "success",
  "failure_domain": null,
  "failure_stage": null
}

メリット:

  • ログ量が予測可能(リクエスト数に比例)
  • 1エントリで1リクエストの全体像が把握できる
  • クエリ・集計が容易

failure_domain と failure_stage

障害発生時に「どこで・どの段階で壊れたか」を構造化して記録するためのフィールド。

フィールド役割値の例
failure_domainどのシステム境界で失敗したかllm_provider, tool_execution, database, external_api
failure_stageどの処理段階で失敗したかplanning, tool_call, validation, response_generation
{
  "status": "error",
  "failure_domain": "llm_provider",
  "failure_stage": "response_generation",
  "error_code": "rate_limit_exceeded"
}

この2つを組み合わせることで、障害のダッシュボードやアラートを「LLMプロバイダのレート制限によるエラーが急増している」のように具体的に分類できる。

適用場面

  • LLMを使ったチャット・エージェントシステムのログ設計
  • マイクロサービス間のリクエスト完了ログ
  • 監査ログが必要なシステム(金融・医療・EC)

関連概念

出典