在Python打印回溯可以使用下面的代码:如何创建一个字符串形式的python backtrace?
import traceback
....
traceback.print_stack()
不过,我需要的backtrace
被用作记录器的字符串,是这样的:
logger.debug(traceback.print_stack())
这,在这种情况下,不起作用。如何最简单得到回溯到记录器?
在Python打印回溯可以使用下面的代码:如何创建一个字符串形式的python backtrace?
import traceback
....
traceback.print_stack()
不过,我需要的backtrace
被用作记录器的字符串,是这样的:
logger.debug(traceback.print_stack())
这,在这种情况下,不起作用。如何最简单得到回溯到记录器?
回溯模块是满的,其docuemtnation你可以在这里看到https://docs.python.org/3/library/traceback.html
其中之一“格式”功能是format_stack
- 只是把它传递一个Python框架对象,O(默认情况下它使用当前帧) - 这将返回一个字符串列表,每个文件的路径和运行位置的行内容:
logger.debug("\n".join(traceback.format_stack()))
或者,如果你有一个例外,回溯的对象,你可以通过调用检索到sys.last_traceback
,您只需将它的tb_frame
属性传递给format_stack乐趣即可ction:
logger.debug("\n".join(traceback.format_stack(sys.last_traceback().tb_frame)))
如果有异常存在,登录追溯的简单方式:
logger.debug(traceback.format_exc())