我正在使用 Heroku 使用 Python 编写 Web 应用程序,但我不知道如何有效地测试调试它。我尝试使用 print(...) 和 sys.stdout.write(...) 但当我在本地运行“foreman start”或部署到云并运行“heroku logs”查看时,我从未看到任何输出云日志。此外,我无法弄清楚如何调试 python 运行时错误,例如发生异常时。该应用程序的 Web 请求返回 HTTP 500,但我无法对其进行调试以查看异常的来源。有什么办法可以看到这些信息吗?
最佳答案
在打印语句后添加 sys.stdout.flush()
为我解决了这个问题。
在我的例子中,问题似乎是 stdout 被缓冲而 stderr 没有。
如果您甚至没有通过 foreman start
看到异常,请确保您实际上是在正确的 IP/PORT 上访问您的服务器。您应该在 foreman start
的输出中看到 HTTP 访问条目(例如 GET/index.html)。
此外,您可以尝试让您的网络框架在 Debug模式下运行——大多数现代框架将在浏览器中以调试/开发模式显示堆栈跟踪。使用 flask ? 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 - 如何在 python 中查看 Heroku 日志记录和运行时错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504588/