Python中l(wèi)ogger模塊的使用場(chǎng)景分析
logging模塊簡(jiǎn)介
logging模塊是Python內(nèi)置的日志模塊,用來生成程序的日志。一條日志對(duì)應(yīng)一個(gè)事件的發(fā)生,一個(gè)事件一般包括:事件發(fā)生時(shí)間、事件發(fā)生位置、事件內(nèi)容、事件嚴(yán)重程度-日志級(jí)別。(還可以包括進(jìn)程ID、進(jìn)程名稱、線程ID、線程名稱等)
logging模塊的組成
1.日志級(jí)別:日志分為五個(gè)等級(jí),從低到高分別是:DEBUG、INFO、WANGING、ERROR、CRITICAL
- DEBUG:最詳細(xì)的信息,通常定位問題的時(shí)候用
- INFO:確認(rèn)一切按照預(yù)期運(yùn)行,詳細(xì)程度僅次于DEBUG
- WARNING:一些意想不到的問題發(fā)生了,或者不久的將來將要發(fā)生問題,比如磁盤空間小,軟件還能正常運(yùn)行。
- ERROR:很嚴(yán)重的問題,軟件沒能正確執(zhí)行某些功能。
- CRITICAL:一個(gè)嚴(yán)重的錯(cuò)誤,程序本身無法繼續(xù)運(yùn)行了。
當(dāng)你的程序指定了一個(gè)日志級(jí)別后,程序會(huì)記錄所有日志級(jí)別大于等于指定級(jí)別的log。比如指定的級(jí)別是WARNING,那么記錄的將是WARNING、ERROR、CRITICAL。至于如何設(shè)置指定日志級(jí)別,將在后面說到。
2.logging的4個(gè)組件:
- logger(日志器):日志類,通過這個(gè)類提供的API來記錄日志。
- handler(處理器):對(duì)日志信息處理,可以將日志發(fā)送到不同的目標(biāo)域中。
- filter(過濾器):對(duì)日志信息進(jìn)行過濾。
- formatter(格式器):日志的格式化
logger模塊的使用
logger是python的內(nèi)置模塊,用以輸出代碼運(yùn)行過程中的運(yùn)行情況,極大的方便了我們的debug過程。參考資料中列出了使用logger相比于print優(yōu)越的地方:
1. 使用print很難和代碼的正常輸出區(qū)分開
2. 使用print沒有辦法一次性失能或移除所有的debug語(yǔ)句
3. 使用print不能生成一個(gè)統(tǒng)一可讀性好的的logger日志文件
一個(gè)最簡(jiǎn)單的使用場(chǎng)景,首先用下面的代碼import logging包,然后將logger等級(jí)設(shè)置為DEBUG:
import logging logging.basicConfig(level=logging.DEBUG)
然后在代碼中需要輸出debug語(yǔ)句的地方將print替換成logging:
logging.debug("This is for debug.")
實(shí)際上,上面的這種用法直接但并不標(biāo)準(zhǔn),標(biāo)準(zhǔn)的做法是定義一個(gè)logger,這樣的話輸入logger日志的時(shí)候就會(huì)顯示定義logger的名字,更容易閱讀:
logger1 = logging.getLogger("module_1") logger2 = logging.getLogger("module_2") logger1.debug("Module 1 debugger") logger2.debug("Module 2 debugger")
如果想把logging語(yǔ)句輸出到文件,只需要在basicConfig部分再添加一個(gè)filename參數(shù),這樣結(jié)果就會(huì)輸出到日志文件中:
logging.basicConfig(filename="test.log", level=logging.DEBUG)
基本的用法就是這些,實(shí)際上logging顯然不僅只有debug而是還有其他非常多的等級(jí),如下表所示:
默認(rèn)的等級(jí)是30,調(diào)成10就會(huì)輸出所有大于等于10的了。
參考模塊:
https://www.digitalocean.com/community/tutorials/how-to-use-logging-in-python-3
到此這篇關(guān)于Python中l(wèi)ogger模塊的使用教程的文章就介紹到這了,更多相關(guān)Python logger模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換
這篇文章主要為大家介紹了python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python使用回溯法子集樹模板獲取最長(zhǎng)公共子序列(LCS)的方法
這篇文章主要介紹了Python使用回溯法子集樹模板獲取最長(zhǎng)公共子序列(LCS)的方法,簡(jiǎn)單描述了最長(zhǎng)公共子序列問題并結(jié)合實(shí)例形式分析了Python基于回溯法子集樹模板獲取最長(zhǎng)公共子序列的操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-09-09Python中請(qǐng)使用isinstance()判斷變量類型
這篇文章主要介紹了Python中請(qǐng)使用isinstance()判斷變量類型,本文先是給出了isinstance函數(shù)判斷變量類型的例子,并對(duì)isinstance 和 type的區(qū)別做了講解,需要的朋友可以參考下2014-08-08python格式化輸出format()函數(shù)常見用法和格式選項(xiàng)
這篇文章主要介紹了python格式化輸出format()函數(shù)常見用法和格式選項(xiàng)的相關(guān)資料,format方法是一種強(qiáng)大的字符串格式化工具,它允許你將變量或表達(dá)式插入到字符串中,并根據(jù)需要進(jìn)行格式化,需要的朋友可以參考下2025-03-03opencv檢測(cè)動(dòng)態(tài)物體的實(shí)現(xiàn)
本文主要介紹了opencv檢測(cè)動(dòng)態(tài)物體的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07PyQt5使用mimeData實(shí)現(xiàn)拖拽事件教程示例解析下
這篇文章主要為大家介紹了PyQt5使用mimeData實(shí)現(xiàn)拖拽事件的教程示例解析,系列文章詳見文中跳轉(zhuǎn)鏈接,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10Python多線程threading模塊用法實(shí)例分析
這篇文章主要介紹了Python多線程threading模塊用法,結(jié)合實(shí)例形式分析了Python多線程threading模塊原理、功能、常見應(yīng)用及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-05-05Python調(diào)整PDF文檔頁(yè)邊距的方法小結(jié)
PDF 文檔中的邊距是指環(huán)繞每頁(yè)內(nèi)容的空白區(qū)域,充當(dāng)文本或圖像與頁(yè)面邊緣之間的緩沖區(qū),本文將介紹如何使用 Spire.PDF for Python 修改 PDF 文檔的頁(yè)邊距,為不同使用場(chǎng)景定制合適的文檔布局,需要的朋友可以參考下2024-05-05Django基于客戶端下載文件實(shí)現(xiàn)方法
這篇文章主要介紹了Django基于客戶端下載文件實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04