如何在python中查看Heroku日志记录和运行时错误输出

我正在使用Heroku开发Python的Web应用程序,我无法弄清楚如何有效地测试它.我尝试使用print(…)和sys.stdout.write(…),但是当我使用’foreman start’本地运行或者当我部署到云并运行’heroku logs’来查看时,我从未看到任何输出云日志.此外,我无法弄清楚如何调试python运行时错误,例如发生异常时.应用程序的Web请求返回HTTP 500,但我无法调试它以查看异常发生的位置.有没有办法看到这些信息?
最佳答案
在print语句之后添加sys.stdout.flush()为我解决了这个问题.

在我的情况下,问题似乎是stdout被缓冲而stderr没有.

如果您甚至没有通过工头开始看到异常,请确保您实际上是在正确的IP / PORT上击中您的服务器.您应该在foreman start的输出中看到HTTP访问条目(例如,GET /index.html).

此外,您可能会尝试告诉Web框架以调试模式运行 – 大多数现代框架将在调试/开发模式下在浏览器中显示堆栈跟踪.使用烧瓶? app.config [‘DEBUG’] = True或app.run(…,debug = True).

# logging helper
def p(*args):
  print args[0] % (len(args) > 1 and args[1:] or [])
  sys.stdout.flush()

转载注明原文:如何在python中查看Heroku日志记录和运行时错误输出 - 代码日志