python常識系列08-->logging模組基礎入門

新夢想IT發表於2023-04-13

前言

努力從今天開始,成功從“零”開始。

一、logging模組是什麼?

是Python內建的標準模組,主要用於輸出執行日誌


二、日誌是什麼?

日誌是程式碼的必要組成部分

記錄日誌能顯示程式當前執行狀態

出問題後定位當時問題

對日誌記錄的資料探勘進行統計和分析(比如 **地區登入APP人數較多等)

三、python日誌級別

DEBUG:除錯資訊

INFO:有用的資訊

WARNING:警告資訊 (預設日誌級別)

ERROR:錯誤資訊

CRITICAL:嚴重錯誤資訊

NOTSET:非級別,表示不設定,按照父logger級別來過濾日誌


日誌級別關係:


NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL


備註:如果把log的級別設定為INFO, 那麼小於INFO級別的日誌都不輸出, 大於等於INFO級別的日誌都輸出。也就是說,日誌級別越高,列印的日誌越不詳細。


四、logging模組實戰

4.1 logging模組基礎程式碼



import logging


logging.debug('-----除錯資訊[debug]-----')

logging.info('-----有用的資訊[info]-----')

logging.warning('-----警告資訊[warning]-----')

logging.error('-----錯誤資訊[error]-----')

logging.critical('-----嚴重錯誤資訊[critical]-----')






由於沒有設定日誌級別,預設WARNING級別,上述程式碼輸出如下:


WARNING:root:-----警告資訊[warning]-----

ERROR:root:-----錯誤資訊[error]-----

CRITICAL:root:-----嚴重錯誤資訊[critical]-----


Process finished with exit code 0 

4.2 自定義日誌級別

 

import logging


logging.basicConfig(level=logging.DEBUG)    #設定日誌級別為DEBUG,注意要大寫

logging.debug('-----除錯資訊[debug]-----')

logging.info('-----有用的資訊[info]-----')

logging.warning('-----警告資訊[warning]-----')

logging.error('-----錯誤資訊[error]-----')

logging.critical('-----嚴重錯誤資訊[critical]-----')




4.3 自定義日誌顯示格式

 

import logging


logging.basicConfig(level=logging.DEBUG,

                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

logging.debug('-----除錯資訊[debug]-----')

logging.info('-----有用的資訊[info]-----')

logging.warning('-----警告資訊[warning]-----')

logging.error('-----錯誤資訊[error]-----')

logging.critical('-----嚴重錯誤資訊[critical]-----')




其中format是控制日誌格式用的,具體格式包含:(ps:讀者可以換到上面程式碼部分試試)

%(levelno)s: 列印日誌級別的數值

%(levelname)s: 列印日誌級別名稱

%(pathname)s: 列印當前執行程式的路徑,其實就是sys.argv[0]

%(filename)s: 列印當前執行程式名

%(funcName)s: 列印日誌的當前函式

%(lineno)d: 列印日誌的當前行號

%(asctime)s: 列印日誌的時間

%(thread)d: 列印執行緒ID

%(threadName)s: 列印執行緒名稱

%(process)d: 列印程式ID

%(message)s: 列印日誌資訊


4.4 自定義日誌輸出到檔案

 

import logging


logging.basicConfig(level=logging.DEBUG,

                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

logging.debug('-----除錯資訊[debug]-----')

logging.info('-----有用的資訊[info]-----')

logging.warning('-----警告資訊[warning]-----')

logging.error('-----錯誤資訊[error]-----')

logging.critical('-----嚴重錯誤資訊[critical]-----')




其中上述程式碼中 filename 引數為日誌檔案配置


小結

如果沒有接觸過日誌的朋友使用本篇入門非常不錯

本篇中使用了 basicConfig() 這種方式去配置日誌,其實還有多種方式配置(如配置檔案配置、自定義logger物件配置等)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2945567/,如需轉載,請註明出處,否則將追究法律責任。

相關文章