logging --- 事件記錄¶
此模組提供標準 Python logging 套件的輕量化子集,並針對 MicroPython 進行調整。它透過階層式命名的 Logger 物件支援分級記錄、提供一小組處理常式(StreamHandler、FileHandler)、透過 Formatter 進行 printf 風格的格式化,以及與作用於根記錄器之函式等效的模組層級便利函式。
此模組對 CPython API 的遵循程度足夠高,因此為標準函式庫撰寫的簡單應用程式應可直接運作而無需修改。本模組不提供篩選器、多行程鎖定、組態檔格式以及大多數處理常式類別。
等級常數¶
函式¶
- logging.getLogger(name: str | None = None) Logger¶
傳回以 name 註冊的
Logger,並在首次使用時建立它。若 name 為None,則傳回根記錄器。第一次以name="root"(或未設定 name)呼叫時,會隱式呼叫basicConfig以附加一個寫入sys.stderr的預設StreamHandler。
- logging.log(level: int, msg: str, *args) None¶
在根記錄器上以 level 等級記錄一則訊息。args 會使用 printf 風格的
%格式化插入 msg;單一字典引數會被當作對應表使用。
- logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None¶
等效於
getLogger().exception(msg, *args, exc_info=exc_info)。以ERROR等級記錄訊息,並在 exc_info 為真值時額外格式化目前作用中例外的回溯記錄。若 exc_info 本身是BaseException,則使用該例外的回溯記錄;否則會在可用時查詢sys.exc_info()。
- logging.addLevelName(level: int, name: str) None¶
將文字 name 與數值 level 建立關聯,如此
Formatter即可透過%(levelname)s呈現它。
- logging.basicConfig(filename: str | None = None, filemode: str = 'a', format: str | None = None, datefmt: str | None = None, level: int = WARNING, stream=None, encoding: str = 'UTF-8', force: bool = False) None¶
以單一處理常式設定根記錄器。
若提供了 filename,則會使用 filemode 與 encoding 建立一個
FileHandler;否則會使用一個寫入 stream(預設為sys.stderr)的StreamHandler。format 與 datefmt 會傳遞給新的
Formatter。level 同時設定處理常式的等級與根記錄器的等級。
若根記錄器已有處理常式,則此函式不執行任何動作,除非 force 為
True,此時現有的處理常式會被關閉並取代。
類別¶
- class logging.Logger(name: str, level: int = NOTSET)¶
具名的記錄器。請透過
getLogger建構記錄器,而非直接建構,如此getLogger才能為相同名稱傳回相同的實例。- log(level: int, msg: str, *args) None¶
以 level 等級記錄 msg。args 會以
%運算子插入 msg;若第一個位置引數為字典,則會將其當作對應表使用。
- class logging.Handler(level: int = NOTSET)¶
所有處理常式的基底類別。子類別實作
emit()。- close() None¶
釋放處理常式所持有的資源。由
shutdown以及FileHandler在關閉時呼叫。
- class logging.StreamHandler(stream=None)¶
將格式化後的記錄寫入 stream,後面接著
self.terminator(預設為"\n")。stream 預設為sys.stderr。- stream¶
目標串流物件。
- class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')¶
StreamHandler子類別,它以指定的 mode 與 encoding 開啟 filename 並將格式化後的記錄寫入其中。底層檔案會在close()時關閉。
- class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)¶
將
LogRecord實例呈現為字串。fmt 是 printf 風格的範本。可辨識的鍵為
%(name)s、%(message)s、%(msecs)d、%(asctime)s以及%(levelname)s。未設定時預設為"%(levelname)s:%(name)s:%(message)s"。datefmt 是用於呈現
%(asctime)s的time.strftime範本。預設為"%Y-%m-%d %H:%M:%S"。- formatTime(datefmt: str, record: LogRecord) str | None¶
使用
time.strftime與 datefmt 格式化record.ct。在time.strftime不可用的平台上傳回None。
- format(record: LogRecord) str¶
呈現 record。若範本使用了
asctime,則會先呼叫formatTime()以填入record.asctime。