在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())