我在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的日志?
谢谢!
答案 0 :(得分:11)
看起来这只是一个问题,因为期望Heroku下的Django会像Rails一样工作。傻我。
对于从一个框架/语言转移到另一个框架/语言时遇到此问题的其他人:
默认情况下,错误会发送到STDERR而不是STDOUT,因此它们不会显示在日志中。这显然可以改变。如果您需要此行为,请尝试此处:
http://codeinthehole.com/writing/console-logging-to-stdout-in-django/
答案 1 :(得分:0)
此行为由服务器(例如gunicorn)设置,而不是Django或Heroku。
通常是更改默认日志级别的命令行或配置。
答案 2 :(得分:-4)
只需更改settings.py文件中的DEBUG即可解决此问题。 DEBUG =真