2012-08-08 12 views
11

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

ステージングサーバーをセットアップしましたが、同じ問題が発生しました。ページには障害が発生していますが、その理由に関するフィードバックはありません。

$の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エラーページを定義しています。これは何とかエラーを隠すことができますか?それは本当にすべきではありません。

または、私はDrogo on Herokuのログを別の場所で探している必要がありますか?

ありがとうございます!

答えて

9

これは、単にHerokuの下のDjangoがRailsのように動作することが予想されるために発生した問題のようです。愚かな私。

  • デバッグをオフにすると、Djangoはコード内のエラーを処理するために、標準のPythonのロガーを使用しています。別のフレームワーク/言語から移動する際にこの問題に苦しんで他の誰のために

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

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

+1

Herokuのドキュメントによれば、stderrとstdoutの両方がログに記録されることが示されています...これはあなたがこれに応答して今変更されたときに違っていたのでしょうか? https://devcenter.heroku。com/articles/logging#write-to-your-log私はそれをテストすることができると思います。 –

+0

私が持っていた問題は、私が期待したように働いたヘロクではなかった。 DjangoはRailsと同じように動作しませんでした。おそらく明らかに。 –

0

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

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

+1

ああ、デフォルトのHeroku設定はスタックトレースを表示していませんか?ありがとう、これは私に試してみる方向を与える。もし実りあれば、私は自分の解決策を説明して受け入れます。 –

+1

OK、私はgunicornを使用し、ロギングレベルをデバッグするように設定しようとしました。サイコロはありません。主な質問を更新しています。 –

+0

私が知ったように、動作はsettings.pyの一番下にあるログ設定を使ってDjangoによって設定されます。最初は少し不透明ですが、標準的なPythonロガー設定だと理解していますので、インターネット上でたくさんのヘルプがあります。 –

-3

これはちょうどあなたのsettings.pyファイルにあなたのDEBUGを変更することで解決することができます。 DEBUG = True