ログ
イベントの記録と分析
ログはシステムで発生したイベントの記録。 エラーの原因調査、監査、デバッグに不可欠です。 構造化ログと適切な集約により、効率的な分析が可能になります。
ログの種類
アプリケーションログ
アプリケーションが出力。エラー、警告、処理結果など。
アクセスログ
HTTPリクエストの記録。URL、ステータス、レスポンス時間。
システムログ
OS、ミドルウェアが出力。syslog、journald。
監査ログ
セキュリティ・コンプライアンス用。誰が何をしたか。
ログレベル
ERRORエラー、要対応。サービスに影響がある問題。
WARN警告、潜在的問題。将来エラーになる可能性。
INFO重要な情報。正常な処理の記録。
DEBUGデバッグ情報。開発時の詳細。
TRACE最も詳細なトレース。本番では通常無効。
本番環境: INFO以上を出力(DEBUG/TRACEは無効)
開発環境: DEBUG以上を出力
構造化ログ
JSON形式でログを出力することで、パース・検索・集計が容易になります。 従来のテキストログよりも機械処理に適しています。
非構造化(避ける)
2024-01-15 10:30:00 ERROR Failed to process request for user_456: connection timeout構造化(推奨)
{"timestamp":"2024-01-15T10:30:00Z",
"level":"ERROR","user_id":"user_456",
"error":"connection timeout"}構造化ログの例
json
1 { 2 "timestamp": "2024-01-15T10:30:00Z", 3 "level": "ERROR", 4 "message": "Failed to process request", 5 "service": "api-gateway", 6 "trace_id": "abc123def456", 7 "span_id": "span789", 8 "user_id": "user_456", 9 "request_id": "req_xyz", 10 "error": { 11 "type": "ConnectionTimeout", 12 "message": "connection timeout after 5000ms" 13 }, 14 "context": { 15 "endpoint": "/api/orders", 16 "method": "POST", 17 "duration_ms": 5000 18 } 19 }
推奨フィールド
| フィールド | 説明 | 例 |
|---|---|---|
| timestamp | ISO 8601形式のタイムスタンプ | 2024-01-15T10:30:00Z |
| level | ログレベル | ERROR, WARN, INFO |
| message | ログメッセージ | Failed to process request |
| service | サービス名 | api-gateway |
| trace_id | 分散トレースID | abc123def456 |
| request_id | リクエストの一意識別子 | req_xyz |
ベストプラクティス
構造化ログを使用
JSON形式で出力、検索・集計を容易に
trace_id / request_id を付与
リクエストを横断的に追跡可能にする
コンテキスト情報を含める
user_id、endpoint、method など調査に必要な情報
適切なログレベルを選択
本番ではINFO以上、必要に応じて動的に変更可能に
機密情報をログに出さない
パスワード、APIキー、トークン、個人情報(PII)
ログの量に注意
過剰なログはコスト増大とノイズの原因