ロギング
アプリケーションの動作を記録し、デバッグ・監視・監査に活用する仕組み
オブザーバビリティ運用
ロギングとは
ロギングは、アプリケーションの動作をログとして記録し、デバッグ、監視、監査に活用する仕組みである。オブザーバビリティの 3 本柱 (メトリクス、ログ、トレース) の 1 つ。
ログレベル
ログレベルを以下にまとめる。
| レベル | 用途 | 例 |
|---|---|---|
| ERROR | エラー、障害 | DB 接続失敗、未処理例外 |
| WARN | 警告、潜在的問題 | リトライ発生、非推奨 API |
| INFO | 正常な動作の記録 | リクエスト処理完了 |
| DEBUG | デバッグ情報 | 変数の値、処理の詳細 |
構造化ログ
構造化ログは JSON 形式でログを出力する手法で、CloudWatch Logs Insights などのツールでフィールド単位の検索・集計が可能になる。非構造化ログ (文字列連結) では正規表現に頼るしかなく、分析が困難になる。
// ❌ 非構造化ログ (検索・分析が困難)
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
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 の保持期間を設定し、コストを管理する。
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
関連する記事
技術書のアウトプット術 - 読んだ本の価値を 10 倍にする方法
技術書を読んだ後のアウトプット方法を負担の少ないものから 5 段階で紹介。アウトプットが記憶の定着を劇的に改善する理由も解説します。
リーダブルコードの次に読む本 - ステップアップの読書ルート
リーダブルコードを読み終えた後、設計力を段階的に高めるための読書ルートと、各レベルで学ぶべきテーマを紹介します。
技術書の読書ログを GitHub で管理する - エンジニアらしい記録法
技術書の読書記録を GitHub リポジトリで管理する方法を紹介します。Markdown で読書ノートを書き、コミット履歴で読書の軌跡を残す、エンジニアならではの読書ログ術です。