1. ホーム
  2. python

[解決済み] django サイトのサーバーエラーのログを取る方法

2022-04-20 05:16:13

質問

ということで、開発で遊ぶ時は settings.DEBUG から True そして、エラーが発生した場合、スタックトレースとリクエスト情報とともに、きれいにフォーマットされたものを見ることができます。

しかし、本番環境では、むしろ DEBUG=False そして、訪問者に標準的なエラー500ページを表示し、現在このバグの修正に取り組んでいるという情報を提供します;)

同時に、これらの情報(スタックトレースとリクエスト情報)をすべてサーバー上のファイルに記録する方法があればと思います。そうすれば、コンソールに出力してエラーがスクロールするのを見たり、1時間ごとにログをメールで送ったり、こんなことができます。

このような単純な要件を満たす、djangoサイト向けのロギングソリューションはどのようなものが推奨されますか?私は、アプリケーションを fcgi フロントエンドにはapache web serverを使用しています(lighttpdへの移行を考えていますが)。

どのように解決するのですか?

さて DEBUG = False にリストされている各人に、Django は自動的にエラーの完全なトレースバックをメールします。 ADMINS を設定することで、ほとんど無料で通知を受けることができます。もっと細かく制御したい場合は、ミドルウェアのクラスを作成して、設定に追加します。 process_exception() この例外は、発生した例外にアクセスすることができます。

http://docs.djangoproject.com/en/dev/topics/http/middleware/#process-exception

あなたの process_exception() メソッドは、コンソールへの書き込み、ファイルへの書き込みなど、好きなタイプのロギングを実行することができます。

編集:少し使い勝手が悪いのですが、このように got_request_exception シグナルは、リクエスト処理中に例外が発生したときに送信されます。

http://docs.djangoproject.com/en/dev/ref/signals/#got-request-exception

これは ない しかし、例外オブジェクトにアクセスできるようになるので、ミドルウェアのメソッドの方がはるかに簡単に作業できます。