12.2 ログに出力すべき内容を決めるには

アプリケーションのアーキテクチャをどうするかという議論は定期的に盛り上がりますが、ログに何を出力すれば良いのかについては、あまり議論されていた記憶がありません。

どのようなシステムも、大局的に見れば入力と出力がある系(システム)だと言えます。システムの稼働時には、データベースの内部状態がプログラムの動作に影響を与える入力になります。一方でデータベースは、結果を格納する出力先でもあります。「入力値が決まれば、処理の結果として出力される内容も決まる」という観点は、ソフトウェアのテストにおいて大切ですが、ログを取得する場合にも意識しておくと良いでしょう。

../_images/system.png

図12-1: ソフトウェアの構造

note

近年話題になっている関数型プログラミングでは、内部の状態も外部化して、ロジックは過去の状態を元に将来の状態を作り出す変換関数として扱います。

12.2.1 どんな目的でログを利用するか

ログ出力にあたっては、どのような目線で利用するかを意識することが大切です。

  • 開発者目線

    • 不具合が発生した時の問題追跡

    • パフォーマンス改善ポイントの発見

  • 運用目線

    • サーバー停止などの確認

    • 監査

    • ユーザーの分析

  • セキュリティ監査目線

    • ユーザーや管理者の操作を後から追跡できるようにする ...