2016-08-04 19 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))) 
相關問題