【问题标题】:Print stacktrace with variables values on uncaught exception in Flask使用 Flask 中未捕获异常的变量值打印堆栈跟踪
【发布时间】:2015-03-17 08:10:11
【问题描述】:

我使用下一个代码在我的 Flask 应用程序中捕获未捕获的异常:

@app.errorhandler(Exception)
def uncaught_exception_handler(error):
    if not app.config['DEVELOPMENT']:
        app.logger.error(error, exc_info=True)
    else:
        raise error

    return 'Internal Server Error', 500

如何将有关每个堆栈帧中变量值的额外信息添加到我的日志文件中?看起来cgitb 正在做想要的事情,但它会将错误信息打印到标准输出或文件,而不是作为字符串返回。我知道使用 inspecttraceback 模块可以做我想做的事情,但由于这是 Python,我认为已经存在针对此类问题的适当解决方案。

【问题讨论】:

  • 您可以根据需要转储locals()globals()
  • 如果不是当前堆栈帧呢?我应该为每一帧手动调用 locals() 吗?
  • 您所说的“不是当前”是什么意思?您希望捕获的变量是什么?
  • 当异常被引发时(正是在那个时候)程序有深度为 n 的调用堆栈。对我来说,当前框架是引发异常的那个框架。调用者的框架(调用引发异常的函数的函数)也有自己的堆栈框架(深度 n-1)。等等。我想在每一帧中获取每个局部变量的值。就像 cgitb 在 this example 中那样做。
  • 好吧我明白你的意思了,基本上你想要全栈,你可能对这个SO Answer感兴趣

标签: python debugging logging exception-handling stack-trace


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2012-05-26
  • 2011-01-18
相关资源
最近更新 更多