Журналы Heroku для проектов Django пропускают ошибки

Я запускаю простой проект Django на Heroku. Он работает, но если я получаю ошибку сервера, это не дает мне никаких подробностей в журналах. Это делает ошибки невероятно трудными.

Теперь я настроил промежуточный сервер, и у него такая же проблема – страницы терпят неудачу, и я не получаю никаких отзывов о том, почему.

$ heroku logs

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. Может ли это как-то скрывать ошибки? Это действительно не должно.

Или мне нужно искать в другом месте для журналов с Django на Heroku?

Благодаря!

Похоже, это была просто проблема, вызванная ожиданием того, что Django под Heroku будет работать как Rails. Дурак я.

Для всех, кто страдает этой проблемой при переходе с одного фреймворка / языка на другой:

  • Когда отладка отключена, Django использует стандартный регистратор Python для обработки ошибок в коде.
  • В нижней части settings.py есть настройка по умолчанию, которая отправляет письма администратору сайта, когда есть ошибки. Ницца. Он нуждается в массиве адресов электронной почты в переменной ADMINS в settings.py для работы.
  • Ошибки отправляются по умолчанию в STDERR вместо STDOUT, поэтому они не отображаются в журналах. По-видимому, это можно изменить. Попробуйте здесь, если вы хотите этого поведения:

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

Такое поведение задается сервером (например, gunicorn), а не Django или Heroku.

Обычно в командной строке или конфигурации изменяется уровень журнала по умолчанию.

Это можно решить, просто изменив DEBUG в файле settings.py. DEBUG = True