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


Python logging.debug用法及代碼示例


用法:

logging.debug(msg, *args, **kwargs)

在根記錄器上記錄級別為 DEBUG 的消息。 msg 是消息格式字符串,args 是使用字符串格式化運算符合並到msg 中的參數。 (請注意,這意味著您可以在格式字符串中使用關鍵字以及單個字典參數。)

kwargs 中有三個關鍵字參數被檢查: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):

第三個可選關鍵字參數是extra可用於傳遞用於使用用戶定義的屬性為日誌記錄事件創建的LogRecord的__dict__的字典。然後可以根據您喜歡使用這些自定義屬性。例如,它們可以合並到記錄的消息中。例如:

FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.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添加了參數。

相關用法


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