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

标签 python web-applications heroku

我正在使用 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'] = Trueapp.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/

相关文章:

python - 如何减小 Python 创建的 txt 文件的大小?

python - 使用 docker 部署时 Flask CLI 抛出 "[Errno 2] No such file"

google-apps-script - 将 Google Apps Script Web 应用程序仅限于某些用户

android - Android 上的离线 Web 应用程序 HTML5

ruby-on-rails - 英雄库/rails : How to install the GNU Scientific Library (GSL) on Heroku?

python - 为什么我无法为字典元素重新分配值但可以附加到它?

python - 通过 BigQuery python api 查询联合表 (Google Drive)

java - 如何更改类路径或为 Jetty 添加类路径

heroku - Heroku-Redis内存> 'maxmemory',在hobby:dev中有一个20MB的文件,应该是25MB

java - Heroku 和 Java : how to set utf-8 as the default encoding postgresql