ログとは何か

ログ(log)は、アプリやシステムで起きた出来事を、時刻や状況とともに残す記録です。画面に見える不具合だけでなく、その直前にどの処理が始まり、どこで失敗したかを後から調べる手掛かりになります。

ログは多ければよいものではありません。調査に必要な情報を残しながら、パスワード、APIキー、個人情報を記録しない設計が必要です。

一文でいうと

ログとは、「いつ、どの処理で、何が起きたか」を後から追うための出来事の記録です。

正常な開始と完了、警告、エラー、外部サービスとの通信結果などを、一定の形式で残します。利用者へ見せるエラーメッセージが次の行動を伝えるのに対し、ログは開発者や運用者が原因を調べるための詳細を担います。

個人開発のどこで登場するか

開発中は、ターミナルとは何かやブラウザの開発者ツールでログを見ます。公開後は、ホスティング先やサーバーとは何かの管理画面で、失敗した要求やバックグラウンド処理を調べます。

次のような問いへ答えられるログが役立ちます。

  • いつ問題が始まったか

  • どの処理が失敗したか

  • 同じ要求のどの段階で止まったか

  • 外部APIからどの種類のエラーが返ったか

  • 修正後に同じ失敗が再発していないか

一件の失敗を追える形で残す

注文確認メールの送信に失敗した例を考えます。本文やメールアドレスを丸ごと残す代わりに、次のような情報を組み合わせます。

  • 発生時刻と環境

  • 処理名と、追跡用の要求ID

  • 成功、警告、失敗の区分

  • 外部サービスから返ったステータスの種類

  • 秘密値を除いたエラー原因

同じ要求IDを受付、保存、メール送信の各ログへ入れると、離れた処理を一本の流れとして追いやすくなります。時刻の形式や重要度の分類も、途中でばらばらにしません。

メトリクスや利用者データと区別する

  • ログ:個々の出来事を記録する

  • メトリクス:件数、割合、時間などを集計した数値として捉える

  • トレース:一つの要求が複数の処理を通る流れを追う

  • データベースの業務データ:アプリの機能そのものに必要な記録

一つの障害調査で組み合わせることはありますが、保存目的は異なります。ログを利用者データの正本にしたり、すべての本文を無制限に保存したりしません。

秘密情報と個人情報を記録しない

OWASPは、認証トークン、パスワード、暗号鍵などをログへ直接記録しないよう示しています。フォーム入力、URL、リクエストヘッダー、例外内容には、意図せず秘密情報や個人情報が含まれる場合があります。

ログを追加するときは次を確認します。

  1. 調査に本当に必要な項目か

  2. 秘密値を除去または置換できているか

  3. 誰がログを閲覧できるか

  4. 改ざんや削除からどう守るか

  5. どの期間で削除するか

漏えいが疑われる値は、ログ行を消すだけでなく、認証情報の失効と再発行も行います。保管方法は個人開発の秘密情報を安全に管理するで確認します。

次に読む記事

公開後の確認項目へつなげる場合はリリース後30日の運用カレンダーを読みます。画面のエラー文を改善する場合は親切なフォームエラーメッセージの作り方へ進み、利用者向けの説明と内部ログを分けます。

参考資料