[解決済み] django サイトのサーバーエラーのログを取る方法
質問
ということで、開発で遊ぶ時は
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
これは ない しかし、例外オブジェクトにアクセスできるようになるので、ミドルウェアのメソッドの方がはるかに簡単に作業できます。
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python入門 openを使ったファイルの読み書きの方法
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] ファイルへの追記はどのように行うのですか?
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】ELMAHを使用して手動でエラーをログに記録する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
python implement mysql add delete check change サンプルコード
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない