在Django中间件中检索堆栈跟踪

时间:2019-03-20 19:25:29

标签: django

当django中间件的服务器端发生故障时,如何获取堆栈跟踪? 这是我尝试过的操作,只给了我消息,而不是整个堆栈。

class MonitorMiddleware(object):
    def process_exception(self, request, exception):
        self.error = exception.message

1 个答案:

答案 0 :(得分:0)

回答“从注释中检索错误堆栈跟踪以保存到数据库”:

https://docs.python.org/3/library/traceback.html

使用traceback的方法将异常的跟踪转换为字符串,然后可以将其存储在数据库中。

也在上一页:

  

3.5版的新功能。

     

StackSummary对象代表准备好进行格式化的调用堆栈。

带有异常对象的简短简短示例:

>>> an_error = IndexError('tuple index out of range')
>>> traceback.print_exception(type(an_error), an_error, an_error.__traceback__)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
IndexError: list index out of range

另请参见Extract traceback info from an exception object: 不过,您无需重新引发异常,而回溯是在__traceback__属性中。