gunicornサーバ上で nginxが起動しているDjangoアプリがあります。 HTTP 500結果、 で生産上の障害を診断する必要がありますが、エラーログファイルには予想される情報が含まれていません。 Thusly:GangicornとnginxのDjango:ログファイルにHTTP 500が表示されない
- gunicornがsetting
errorlog = "/somepath/gunicorn-errors.log"
- nginxのはsetting
error_log /somepath/nginx-errors.log;
- 私のアプリは、私が持っているビューがURL
/fail_now
- にマッピングされている 無条件
raise Exception("Just for testing.")
を行いdispatch
そのInternalErrorView
を持っていました変更されていないhandler500
DEBUG=True
でアプリを実行し、ブラウザに/fail_now
をリクエストした場合、"Just for testing."
というメッセージを含む通常のDjangoエラー画面が表示されます。ファイン。- でアプリを実行すると、 という応答が期待通りに
<h1>Server Error (500)</h1>
になります。ファイン。 - しかし、
gunicorn-errors.log
を見ると、このHTTP 500イベントのエントリは全くありません。 なぜですか?どうすれば入手できますか? 私はトレースバックを取得したいと思います。 - 同様に
nginx-errors.log
:500の痕跡または/fail_now
の痕跡がありません。 なぜですか?
ボーナス質問:中央メッセージとして <h1><p>Internal Server Error</p></h1>
と9行の文書:私は私の元の生産上の問題にこれを比較すると 、私はそこ 異なる応答を取得しています。 なぜですか?
ボーナス質問2: 私は私のステージングサーバーに私のデータベースの内容をコピー(本番サーバへのコンフィギュレーションで 同一である)と、予想通り、そこ/fail_now
作品をジャンゴで DEBUG=True
を設定しますが、私の元 の問題は引き続き<h1><p>Internal Server Error</p></h1>
と表示されます。 WTF?デバッグ= Falseの中、私は<h1><p>Internal Server Error</p></h1>
が生産にnginxのによって生成されたと思いますnginxのデフォルトのファイルで