ロギング

アプリケーションの動作を記録し、デバッグ・監視・監査に活用する仕組み

オブザーバビリティ運用

ロギングとは

ロギングは、アプリケーションの動作をログとして記録し、デバッグ、監視、監査に活用する仕組みである。オブザーバビリティの 3 本柱 (メトリクス、ログ、トレース) の 1 つ。

ログレベル

レベル 用途
ERROR エラー、障害 DB 接続失敗、未処理例外
WARN 警告、潜在的問題 リトライ発生、非推奨 API
INFO 正常な動作の記録 リクエスト処理完了
DEBUG デバッグ情報 変数の値、処理の詳細

構造化ログ

// ❌ 非構造化ログ (検索・分析が困難)
console.log('Order processed: ' + orderId + ' in ' + duration + 'ms');

// ✅ 構造化ログ (JSON)
console.log(JSON.stringify({
  level: 'info',
  message: 'Order processed',
  orderId,
  duration,
  timestamp: new Date().toISOString(),
}));

CloudWatch Logs Insights

-- エラーログを検索
fields @timestamp, @message
| filter level = 'error'
| sort @timestamp desc
| limit 20

-- レイテンシの P99 を計算
filter level = 'info'
| stats percentile(duration, 99) as p99 by bin(1h)

ログの設計指針

ログは JSON 形式で構造化し、リクエストを追跡するための相関 ID を付与する。パスワードやトークンなどの機密情報はログに含めない。ERROR レベルを乱用せず適切なレベルを選択し、「何が起きたか」だけでなく「なぜ起きたか」のコンテキストも記録する。

環境ごとのログレベル

Mappings:
  EnvConfig:
    dev:
      LogLevel: DEBUG
    stg:
      LogLevel: INFO
    prod:
      LogLevel: WARN

ログの保持期間

環境 保持期間
dev 7 日
stg 30 日
prod 90〜365 日

CloudWatch Logs の保持期間を設定し、コストを管理する。

実務での活用方法は関連書籍にも詳しい。

関連用語