Python中logging的使用

2021-09-26 14:06:58 字數 2038 閱讀 2034

我們先來看一下函式式簡單配置

預設情況下python的logging模組將日誌列印到了標準輸出中,且只顯示了大於等於warning級別的日誌,這說明預設的日誌級別設定為warning

(日誌級別等級critical > error > warning > info > debug),

預設的日誌格式為日誌級別:logger名稱:使用者輸出訊息。

我們自己用函式寫的這個可以正常使用但是不夠靈活,我們看看這個靈活的

下面我將在這裡介紹乙個簡單的日誌書寫格式

首先要匯入模組 通過logging.getlogger建立物件,括號內為使用者名稱預設為root。因為匯入方式比較長,為了方便之後的使用所以賦值給了logger。

然後通過logging.filehandler 建立乙個log檔案,mode預設為追加模式,通過logging.streamhandler建立終端輸出模式、

通過logging.formatter來定義輸出的格式。和字串的格式不同,logging中有以下格式。

%(name)s logger的名字

%(levelno)s 數字形式的日誌級別

%(levelname)s 文字形式的日誌級別

%(pathname)s 呼叫日誌輸出函式的模組的完整路徑名,可能沒有

%(filename)s 呼叫日誌輸出函式的模組的檔名

%(module)s 呼叫日誌輸出函式的模組名

%(funcname)s 呼叫日誌輸出函式的函式名

%(lineno)d 呼叫日誌輸出函式的語句所在的**行

%(created)f 當前時間,用unix標準的表示時間的浮 點數表示

%(relativecreated)d 輸出日誌資訊時的,自logger建立以 來的毫秒數

%(asctime)s 字串形式的當前時間。預設格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒

%(thread)d 執行緒id。可能沒有

%(threadname)s 執行緒名。可能沒有

%(process)d 程序id。可能沒有

%(message)s使用者輸出的訊息

通過以下兩種方式來設定輸出等級,我們上面也說過logging預設的輸出等級為warning及30.我們下面列乙個各個級別對應的數字。

通過上圖可以知道每個級別對應的數字。

隨後我們用之前確定好的輸出模式用過setformatter來繫結到檔案和螢幕上。

然後通過addhandler將設定儲存日誌資訊的檔案繫結到logger日誌上,且addhandler每執行一次會多新增一次輸出,所以日誌最好單次執行,多次執行需要謹慎執行addhandler

最後即使通過不同的級別來記錄日誌了。

python中的logging模組

一 python中的logging模組提供了日誌的介面,過它儲存各種格式的日誌 日誌的等級分為以下幾種,日誌的等級按照以下順序依次提高,debug info warning error critical 但是日誌的資訊量是依次減少的,當指定乙個日誌級別之後,會記錄大於或等於這個日誌級別的日誌資訊,小...

python中的logging模組學習

l 預設的情況下python的logging模組列印到控制台,只顯示大於等於warning級別的日誌 l 日誌級別 critical error warning info debug notset 1.logger l logger是乙個樹形層級結構,輸出資訊之前都要獲得乙個logger l log...

Python中logging例項講解

logging 的基本用法網上很多,這裡就不介紹了。在引入正文之前,先來看乙個需求 假設需要將某功能封裝成類庫供他人使用,如何處理類庫中的日誌?數年前在乙個 c 開發的專案中,我用程式設計客棧了這樣的方法 定義乙個 logging 基類,所有需要用到日誌的類都繼承這個基類,這個基類中定義乙個 log...