68:ログがどこに出ているか確認しよう

保守を引き継いだプロジェクトなどで、アプリケーションのログが全く出力されていない、といったことはありませんか? 利用者から「画面にエラーが発生しました、と表示されます」と連絡をもらい、調べてみたらログがどこにも出ていないということもよくある話です。 ログが出力されていないのは論外ですが、実装者がログの重要性がわかっていないと、たびたびこういった問題が起こります。

具体的な失敗

Djangoの場合、開発中は manage.py runserver でWebアプリケーションを実行します。 Djangoのデフォルトの設定では、ページにアクセスするたびにコンソールにアクセスログが出力されます。 しかし「ログ出力を実装する」と言った場合、アクセスログのことではなく、明示的に実装したログのことを指すのが一般的です。 アクセスログを見て「ログが出ている」と考えてはいけません。

cover

(中略)詳細は書籍 自走プログラマー をご参照ください

ベストプラクティス

ログがどこに出力されるのか、調査しやすい情報が出力されているか、早い段階で確認しておきましょう。 そのために、以下の情報を確認しましょう。

  • settings.pyLOGGING が設定されていこと

  • ファイルに出力する設定の場合、ログがファイルに記録されていること

  • 標準出力に出力する設定の場合、Gunicorn等を起動しているサービスマネージャーのログに記録されていること

  • 記録されているログに、ログレベルや時刻など期待する情報が出力されていること

どのような情報がログに出力されていると良いのかについては、以降のプラクティスで説明します。 また、サービスマネージャーについては 93:サービスマネージャーでプロセスを管理する を参照してください。