當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python logging.Logger.debug用法及代碼示例


用法:

debug(msg, *args, **kwargs)

在此記錄器上記錄級別為 DEBUG 的消息。 msg 是消息格式字符串,args 是使用字符串格式化運算符合並到msg 中的參數。 (請注意,這意味著您可以在格式字符串中使用關鍵字以及單個字典參數。)當沒有提供 args 時,不會對 msg 執行 % 格式化操作。

kwargs 中有四個關鍵字參數被檢查:exc_infostack_infostacklevelextra

如果exc_info 未評估為假,則會將異常信息添加到日誌消息中。如果提供了異常元組(以 sys.exc_info() 返回的格式)或異常實例,則使用它;否則,調用sys.exc_info() 獲取異常信息。

第二個可選關鍵字參數是 stack_info ,默認為 False 。如果為 true,則將堆棧信息添加到日誌消息中,包括實際的日誌調用。請注意,這與通過指定 exc_info 顯示的堆棧信息不同:前者是從堆棧底部到當前線程中的日誌調用的堆棧幀,而後者是有關已被調用的堆棧幀的信息在搜索異常處理程序時,在異常之後展開。

您可以獨立於 exc_info 指定 stack_info ,例如僅顯示您如何在代碼中到達某個點,即使沒有引發異常。堆棧幀打印在標題行之後,標題行顯示:

Stack (most recent call last):

這模仿了顯示異常幀時使用的Traceback (most recent call last):

第三個可選關鍵字參數是 stacklevel ,默認為 1 。如果大於 1,則在計算為記錄事件創建的 LogRecord 中設置的行號和函數名稱時,會跳過相應的堆棧幀數。這可用於記錄助手,以便記錄的函數名、文件名和行號不是助手函數/方法的信息,而是其調用者的信息。此參數的名稱反映了warnings 模塊中的等效名稱。

第四個關鍵字參數是extra,它可用於傳遞一個字典,該字典用於填充為具有用戶定義屬性的日誌事件創建的LogRecord 的__dict__。然後可以隨意使用這些自定義屬性。例如,它們可以合並到記錄的消息中。例如:

FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logger = logging.getLogger('tcpserver')
logger.warning('Protocol problem: %s', 'connection reset', extra=d)

會打印類似的東西

2006-02-08 22:20:02,165 192.168.0.1 fbloggs  Protocol problem: connection reset

extra 中傳遞的字典中的鍵不應與日誌記錄係統使用的鍵發生衝突。 (有關日誌記錄係統使用哪些 key 的更多信息,請參閱Formatter 文檔。)

如果您選擇在記錄的消息中使用這些屬性,則需要格外小心。例如,在上麵的示例中,Formatter 已使用格式字符串設置,該格式字符串在 LogRecord 的屬性字典中需要 ‘clientip’ and ‘user’。如果缺少這些,則不會記錄該消息,因為會發生字符串格式異常。所以在這種情況下,您總是需要使用這些鍵傳遞extra 字典。

雖然這可能很煩人,但此函數旨在用於特殊情況,例如在許多上下文中執行相同代碼的多線程服務器,並且出現的有趣條件取決於此上下文(例如遠程客戶端 IP 地址和經過身份驗證的用戶名,在上麵的示例中)。在這種情況下,專門的 Formatter 可能會與特定的 Handler 一起使用。

在 3.2 版中更改: stack_info添加了參數。

在 3.5 版中更改: exc_info參數現在可以接受異常實例。

在 3.8 版中更改: stacklevel添加了參數。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 logging.Logger.debug。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。