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 变量中的一组电子邮件地址才能工作。
  • 默认情况下,错误会发送到 STDERR 而不是 STDOUT,因此它们不会显示在日志中。这显然可以改变。如果您想要这种行为,请在此处尝试:

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

于 2012-08-09T08:33:34.347 回答
0

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

通常有一个命令行或配置可以更改默认日志级别。

于 2012-08-08T14:23:59.863 回答
-6

这可以通过更改 settings.py 文件中的 DEBUG 来解决。调试=真

于 2017-01-05T18:55:39.480 回答