【问题标题】:No traceback when app crashes or has errors应用程序崩溃或出现错误时没有回溯
【发布时间】:2014-07-09 12:56:19
【问题描述】:

我有一个使用 this tutorial 设置的小型 Python Web 应用程序。一切似乎都运行顺利,但是当程序崩溃或遇到错误时,我没有收到回溯或错误消息。我正在使用

heroku logs --tail

实时查看服务器日志。

例如,我用这段代码引入了“列表索引超出范围”错误:

thing = [1, 2, 3]
print thing[4]

我肯定会点击该代码,因为我在前一行将消息记录到控制台。但是在 Heroku 日志中,我看到了我的日志消息,然后什么也没有。没有错误或失败的迹象。如何查看我的日志?我应该在不同的地方寻找吗?

如果我在 Python 2.7.6 交互式解释器中运行相同的代码,我会得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

【问题讨论】:

    标签: heroku flask gunicorn error-logging


    【解决方案1】:

    Zev,这是一个简单的 Flask 应用程序,它将堆栈跟踪转储到 Heroku 日志中:

    https://github.com/jwatson/simple-flask-stacktrace

    希望你能弄清楚你的应用和这个有什么不同。我为设置标准记录器所付出的努力似乎没有任何区别,所以我不太确定是什么阻止了你的应用程序大声抱怨异常。我使用 Gunicorn 作为我的 WSGI 服务器,但这似乎也没有什么不同。

    【讨论】:

    • 您是说必须将日志记录配置为获取堆栈跟踪的先决条件吗?默认是静默失败吗?
    • 我所要做的就是app.debug = True。我在其他任何地方都没有看到。谢谢!
    • @Zev 是的,那个也吸引了我。 stackoverflow.com/questions/45555038。正确答案确实是app.debug = True。顺便说一句,您可以回答自己的问题,并且当人们投票支持它时仍然可以获得积分......如果它更好(如本例所示),您甚至可以接受自己的答案。
    • @Zev 另一种选择(如果您想在这里给 jwatson 一些信任,因为他确实很有帮助)是提议对他的答案进行编辑,并添加您的 app.debug = True 评论。如果被拒绝,请不要重复,否则您会收到版主的来信。 (我希望 SO 在这种情况下只显示您之前的拒绝信息......叹息)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2017-02-03
    相关资源
    最近更新 更多