ログ

イベントの記録と分析

ログはシステムで発生したイベントの記録。 エラーの原因調査、監査、デバッグに不可欠です。 構造化ログと適切な集約により、効率的な分析が可能になります。

ログの種類

アプリケーションログ

アプリケーションが出力。エラー、警告、処理結果など。

アクセスログ

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}

推奨フィールド

フィールド説明
timestampISO 8601形式のタイムスタンプ2024-01-15T10:30:00Z
levelログレベルERROR, WARN, INFO
messageログメッセージFailed to process request
serviceサービス名api-gateway
trace_id分散トレースIDabc123def456
request_idリクエストの一意識別子req_xyz

ベストプラクティス

構造化ログを使用

JSON形式で出力、検索・集計を容易に

trace_id / request_id を付与

リクエストを横断的に追跡可能にする

コンテキスト情報を含める

user_id、endpoint、method など調査に必要な情報

適切なログレベルを選択

本番ではINFO以上、必要に応じて動的に変更可能に

機密情報をログに出さない

パスワード、APIキー、トークン、個人情報(PII)

ログの量に注意

過剰なログはコスト増大とノイズの原因

詳細トピック