14

Herokuで簡単なDjangoプロジェクトを実行しています。動作しますが、サーバーエラーが発生した場合、ログに詳細が表示されません。これにより、エラーの処理が非常に困難になります。

これでステージングサーバーをセットアップしましたが、同じ問題があります。ページが失敗し、その理由についてのフィードバックがありません。

$herokuログ

..。

2012-08-08T13:55:58+00:00 app[web.1]: Development server is running at http://0.0.0.0:59048/
2012-08-08T13:55:59+00:00 heroku[web.1]: State changed from starting to up
2012-08-08T13:56:01+00:00 heroku[router]: GET [xxx].herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=22ms status=500 bytes=27
2012-08-08T13:56:01+00:00 app[web.1]: [08/Aug/2012 14:56:01] "GET / HTTP/1.1" 500 27
2012-08-08T13:56:02+00:00 heroku[router]: GET [xxx].herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=6ms status=500 bytes=27
2012-08-08T13:56:09+00:00 heroku[router]: GET[xxx].herokuapp.com/admin dyno=web.1 queue=0 wait=0ms service=2ms status=301 bytes=0
2012-08-08T13:56:09+00:00 app[web.1]: [08/Aug/2012 14:56:09] "GET /admin HTTP/1.1" 301 0
2012-08-08T13:56:10+00:00 heroku[router]: GET [xxx].herokuapp.com/admin/ dyno=web.1 queue=0 wait=0ms service=224ms status=500 bytes=27
2012-08-08T13:56:10+00:00 app[web.1]: [08/Aug/2012 14:56:10] "GET /admin/ HTTP/1.1" 500 27
2012-08-08T13:56:10+00:00 heroku[router]: GET [xxx].herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=6ms status=500 bytes=27

ご覧のとおり、ページは500として返されますが、スタックトレース情報などを取得していません。

考えられる問題は次のように示されます。「開発サーバーは...で実行されています」-これはどういう意味で、エラーログに影響しますか?

また、「500.html」テンプレートファイルを使用してカスタム500エラーページを定義しています。これはどういうわけかエラーを隠しているのでしょうか?それは本当にすべきではありません。

または、HerokuでDjangoを使用してログを別の場所で探す必要がありますか?

ありがとう!

4

3 に答える 3

11

Herokuの下のDjangoがRailsのように機能するという期待によって引き起こされた問題のようです。愚かな私。

あるフレームワーク/言語から別のフレームワーク/言語に移動するときにこの問題に苦しんでいる他の人のために:

  • デバッグがオフの場合、Djangoは標準のPythonロガーを使用してコードのエラーを処理します。
  • settings.pyの下部にデフォルトの設定があり、エラーが発生したときにサイト管理者に電子メールを送信します。良い。動作するには、settings.pyのADMINS変数に電子メールアドレスの配列が必要です。
  • エラーは、デフォルトではSTDOUTではなくSTDERRに送信されるため、ログには表示されません。これは明らかに変更できます。この動作が必要な場合は、ここで試してください。

    http://codeinthehole.com/writing/console-logging-to-stdout-in-django/

于 2012-08-09T08:33:34.347 に答える
0

この動作は、DjangoやHerokuではなく、サーバー(gunicornなど)によって設定されます。

通常、デフォルトのログレベルを変更するコマンドラインまたは構成があります。

于 2012-08-08T14:23:59.863 に答える
-6

これは、settings.pyファイルのDEBUGを変更するだけで解決できます。DEBUG = True

于 2017-01-05T18:55:39.480 に答える