【问题标题】:How do I log an exception object with traceback in Python 3如何在 Python 3 中使用回溯记录异常对象
【发布时间】:2014-09-11 22:42:12
【问题描述】:

如何在 Python 3 中使用标准 logging 模块记录异常对象及其回溯?

请注意,有问题的异常不一定是当前正在处理的异常。

【问题讨论】:

    标签: python exception logging python-3.x


    【解决方案1】:

    Logger 对象接受exc_info 参数以包含异常信息(包括回溯),该参数应为包含异常类、异常本身和异常回溯的元组。最棘手的部分是获取回溯,但事实证明,从 Python 3.0 开始,exceptions have a __traceback__ attribute:

    logger = logging.getLogger()
    exc_info = (type(exc), exc, exc.__traceback__)
    logger.error('Exception occurred', exc_info=exc_info)
    

    【讨论】:

    • 对于 Python 2.7,您可以使用 sys.exc_info() 获取当前正在处理的异常的回溯。
    • @LukasGraf 我知道,但这个问题涉及一般异常对象。
    • 您可以简单地使用:logger.error('Exception occurred', exc_info=exc)。 Python 本身将 extract exception type/traceback info.
    【解决方案2】:

    老实说,我不知道这样做是否有任何贡献,但我确实找到了我认为与您的问题相关的资源,希望对您有用。

    http://www.alexconrad.org/2013/02/loggingexception.html

    它的要点是,如果您将 logging.exception() 放在 except 块内,那么您可以记录所有错误。

    【讨论】:

    • 问题是它不在异常处理程序中。
    猜你喜欢
    • 2010-12-03
    • 2010-12-08
    • 2019-04-09
    • 2012-07-05
    • 2010-09-18
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多