Django的Heroku日志项目缺少错误

时间:2012-08-08 14:09:23

标签: python django logging heroku

我在Heroku上运行一个简单的Django项目。它可以工作,但如果我收到服务器错误,它不会在日志中给我任何细节。这使得错误难以处理。

现在我已经设置了一个临时服务器并且它有同样的问题 - 页面失败了,我没有得到任何关于原因的反馈。

$ 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错误页面。这可能会以某种方式隐藏错误吗?它真的不应该。

或者我是否需要在另一个地方寻找使用Heroku上的Django的日志?

谢谢!

3 个答案:

答案 0 :(得分:11)

看起来这只是一个问题,因为期望Heroku下的Django会像Rails一样工作。傻我。

对于从一个框架/语言转移到另一个框架/语言时遇到此问题的其他人:

  • 当调试关闭时,Django使用标准的Python记录器来处理代码中的错误。
  • settings.py底部有一个默认设置,当出现错误时会通过电子邮件发送网站管理员。尼斯。它需要在settings.py中的ADMINS变量中使用一组电子邮件地址才能工作。
  • 默认情况下,错误会发送到STDERR而不是STDOUT,因此它们不会显示在日志中。这显然可以改变。如果您需要此行为,请尝试此处:

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

答案 1 :(得分:0)

此行为由服务器(例如gunicorn)设置,而不是Django或Heroku。

通常是更改默认日志级别的命令行或配置。

答案 2 :(得分:-4)

只需更改settings.py文件中的DEBUG即可解决此问题。 DEBUG =真