
logging 【日誌】
Logging
Logging library module 允許開發人員將日誌功能整合到他們的應用程序中,從而在運行時記錄事件、錯誤和其他重要信息。

print() 是沒有嚴重性概念的普通文本。而 Logging 具有 4 個級別的日誌訊息嚴重性或重要性,有助於從訊息忽略較低嚴重性的訊息。
info(msg, *args, **kwargs)
監視和理解應用程序行為。(例如: 報告流程、事件、顯示狀態)
debug(msg, *args, **kwargs)
用於開發和測試階段。(例如: 記錄變數值、路徑、內部狀態)
warning(msg, *args, **kwargs)
表示問題已經發生或即將發生,但應用程序仍可以繼續運行。
error(msg, *args, **kwargs)
表示特定操作或任務失敗或遇到異常。錯誤通常會阻止應用程序按預期運行或產生不正確的結果。
critical(msg, *args, **kwargs)
表示對應用程序的功能有重大的嚴重錯誤。當此類事件發生時,應用程序可能處於不穩定或不可恢復的狀態。
執行結果
最佳的紀錄工具
顯示在 Terminal
print()
監控或故障調查
logging.info()、 logging.debug()
發出事件的警告
logging.warning()(注意該事件)、warnings.warn();(必須修正該事件)
報告事件的錯誤
引發 Exception。詳見: [[exception 【異常】]]
抑制錯誤而不引發異常 (例如: 伺服器中的 Threading)
logging.error(), logging.exception(), logging.critical()
basicConfig
快速設定多個屬性 (logger、FileHandler...)
常用的參數:
filename
寫入日誌訊息的檔案名稱,否則輸出在 Terminal。
filemode
寫入模式,即 open()。如果指定 filename,則使用 "a"。
format
需要寫入的日誌訊息。詳見: LogRecord attributes。
datefmt
指定的日期/時間格式。與 time.strftime() 的格式相同。
style
日誌訊息的格式('%', '{', '$'),預設為%。
level
設置根記錄器級別,不會記錄較小的級別的日誌。級別大小為: DEBUG < INFO < WARNING < ERROR < CRITICAL。
encoding
編碼模式。常使用 encoding="UTF-8"。
fileConfig
fileConfig() 允許使用 Configuration file 設定日誌記錄,而不是透過程式碼的方式定義。 支持的格式有:.ini、.yaml、.json。
透過使用 logging.config.fileConfig(),您可以將日誌記錄設定與您的程式碼分開,從而在不修改代碼本身的情況下更輕鬆地管理。此外,您可以為不同的環境或模塊使用不同的 Configuration file。
Logger
建立 Logger ,可以過濾 log 資訊。
設定 Logger。
建議使用 logger.getLogger(__name__)。
因為它將返回當前的 package 命名空間。如果有多個.py 檔案時很有用。
Handler
如何處理 Logger 的資訊。
將 Logger 輸出到 File。
將 Logger 輸出到 Terminal。
將 Logger 輸出到 Web 。
設定 Handler 屬性。 其他屬性詳見:logging.Handler
Filter
Filter class 允許您自定義過濾器以根據特定條件有選擇地過濾掉日誌記錄。 它提供了一種微調日誌記錄系統中日誌記錄處理的方法。
Filter Filter class 是一個 base class, 它提供了一個 filter(record) 的方法,您需要在子 class 中覆蓋該方法。 filter() 方法將日誌記錄作為輸入,如果返回 True,則處理該日誌;則返回 True,如果返回 False,則跳過該日誌 。
過濾器與日誌級別將會一起運行,日誌級別具有較高的優先度。
例如:如果日誌級別設置為 WARNING,則只有 WARNING 或更高級別的日誌記錄才會被處理,而不管過濾器的設定。
範例
basicConfig
執行結果:

執行結果:
fileConfig
logger
執行結果:
執行結果:
Handler
執行結果:
Filter
執行結果:
Logger Decorator
執行結果:
執行結果:
參考資料
Python Doc
基礎 Logging 指南 — Python 3.11.3 說明文件
logging.basicConfig — Python 3.11.3 說明文件
logging.getLogger — Python 3.11.3 說明文件
config.fileConfig — Python 3.11.3 documentation
Blog
Logging in Python - MachineLearningMastery.com
Logging in Python ——真正的 Python
Python 日誌記錄基礎:方法教程、示例及更多 - Sematext
在 Python 中登錄 - MachineLearningMastery.com
如何使用logging.Filter? | Python笔记
Python logging 模組之 logging.basicConfig 用法和參數詳解_Sir靜堂的博客-CSDN博客
Last updated
Was this helpful?