2016-08-04 79 views
0

在Python打印回溯可以使用下面的代码:如何创建一个字符串形式的python backtrace?

import traceback 
.... 
traceback.print_stack() 

不过,我需要的backtrace被用作记录器的字符串,是这样的:

logger.debug(traceback.print_stack()) 

这,在这种情况下,不起作用。如何最简单得到回溯到记录器?

回答

1

回溯模块是满的,其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))) 
相关问题