Page cover

logging 【日誌】

Logging


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

Logging library module
Logging library module

print() 是沒有嚴重性概念的普通文本。而 Logging 具有 4 個級別的日誌訊息嚴重性或重要性,有助於從訊息忽略較低嚴重性的訊息。

Log 級別
說明

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。

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,則跳過該日誌 。

範例


basicConfig

執行結果:

執行結果
執行結果

執行結果:

fileConfig


logger


執行結果:

執行結果:

Handler


執行結果:

Filter


執行結果:

Logger Decorator


執行結果:

執行結果:

參考資料


Python Doc

基礎 Logging 指南 — Python 3.11.3 說明文件

進階日誌教程 — Python 3.11.3 說明文件

日誌操作手冊 — Python 3.11.3 說明檔

logging.basicConfig — Python 3.11.3 說明文件

logging.getLogger — Python 3.11.3 說明文件

handlers — Python 3.11.3 文檔

config.fileConfig — Python 3.11.3 documentation

filter objects

Blog

Logging in Python - MachineLearningMastery.com

Logging in Python ——真正的 Python

Python 日誌記錄基礎:方法教程、示例及更多 - Sematext

在 Python 中登錄 - MachineLearningMastery.com

如何使用logging.Filter? | Python笔记

Python logging 模組之 logging.basicConfig 用法和參數詳解_Sir靜堂的博客-CSDN博客

Python - 日誌 (logging) 模組 | Titangene Blog

Last updated

Was this helpful?