ログ
システムが残す出来事の記録。障害調査の一次資料であり、運用の目。
概要
ログは、システムが自分の身に起きた出来事を「いつ・どこで・何が起きたか」の形で書き残した記録です。リクエストを受けた、処理に成功した、エラーが起きた、誰かがログインした — ソフトウェアは動作の節目ごとにこうした一行を書き出し、ファイルや専用の基盤に蓄積していきます。航海日誌(logbook)が語源で、文字どおり「システムの日誌」です。
障害が起きたとき、エンジニアが最初に開くのがログです。ユーザーからの「エラーになった」という報告だけでは何も分かりませんが、ログにはその瞬間のサーバの中で起きたことが時系列で残っています。逆に言えば、ログがない場所で起きたバグは推理するしかありません。「後から調べられるように書き残しておく」こと自体が、運用の質を決める設計行為です。
なぜ生まれたか
プログラムの実行は一瞬で過ぎ去り、何も残しません。開発中ならデバッガで止めて中を覗けますが、本番で動くシステムの「昨夜3時に起きた一度きりのエラー」を再現することはほぼ不可能です。過ぎ去った出来事を調査可能にするには、実行の痕跡を記録として残しておくしかない — ログはこの必要から、コンピュータの黎明期とともに生まれた最も古い運用技術の一つです。
さらにログの用途は障害調査にとどまりません。誰がいつ何をしたかを残す監査証跡(不正アクセスの調査や法令対応の根拠)、アクセス傾向の分析、性能劣化の追跡 — 「記録がなければ、起きたことは無かったことと同じ」という原則が、あらゆるシステムにログを書かせています。
詳細
ログレベル — 重要度で振り分ける
すべての出来事を同じ重みで記録すると、重大なエラーが大量の些細な記録に埋もれます。そこでログには重要度のレベルを付けるのが標準です。細かいものから順に、DEBUG(開発時の詳細情報)、INFO(正常動作の節目)、WARN(今は動いているが怪しい兆候)、ERROR(処理が失敗した)、FATAL/CRITICAL(システム継続が危うい)が典型です。本番ではINFO以上だけを出力し、調査時にDEBUGへ切り替える、ERROR以上は監視のアラートに直結させる、といった運用がレベル分けによって可能になります。
構造化ログ — 人間向けから機械向けへ
伝統的なログは「2026-07-17 03:12:45 ユーザー12345のログインに失敗」のような自由な文章でした。人間には読めますが、機械的な検索・集計には不向きです。そこで現在は、各行をJSONで書く「構造化ログ」が主流になっています。{"time": "...", "level": "error", "event": "login_failed", "user_id": 12345} のようにフィールドを持たせれば、「user_id=12345のERRORだけ抽出」「エラー種別ごとに件数を集計」といった操作が確実に行えます。ログは人間が目で読むものから、基盤に取り込んで機械が検索・集計するデータへと性格を変えました。
集約基盤 — 散らばったログを一箇所に
システムが複数のサーバやコンテナに分散すると、1台ずつログインしてログファイルを見る方法は破綻します。特にコンテナは破棄されるとローカルのログごと消えるため、ログを外部へ送り出すことが前提になります。そこで各サーバのログを収集エージェント(Fluentdなど)で集め、検索可能な基盤(Elasticsearch + Kibana、Grafana Loki、CloudWatch Logs、Datadogなど)に集約するのが現代の標準構成です。全サーバのログを一つの画面から時系列で横断検索できる状態が、分散システム調査の出発点になります。
実務での勘所 — 何を書き、何を書かないか
良いログの条件は「調査する未来の自分が必要とする文脈が入っていること」です。エラーの記録に「失敗しました」とだけあっても手がかりになりません。何の処理が、どの入力で、どんな理由で失敗したかを含めます。分散システムでは、1つのリクエストに一意なID(リクエストID/トレースID)を発行して全サービスのログに埋め込み、サービスをまたいで追跡できるようにするのが定石です。この発想を発展させたものが、マイクロサービス時代の分散トレーシングにつながっています。
一方で「書いてはいけないもの」もあります。パスワード、クレジットカード番号、セッショントークンなどの秘密情報・個人情報をログに残すと、ログ基盤自体が漏えいの火種になります。また、ログは書けば書くほどストレージ費用と検索速度を圧迫するため、保持期間(直近は高速な基盤、古いものは安価なストレージへ、期限が来たら削除)の設計も必要です。何を残し、何を落とし、いつ捨てるか — ログは監視と並んで、システムの「観測できる度合い」を決める運用の基礎語彙です。