亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 中如何使用 setLevel() 設(shè)置日志級(jí)別

 更新時(shí)間:2023年07月10日 09:58:10   作者:跡憶客  
這篇文章主要介紹了在 Python 中使用setLevel() 設(shè)置日志級(jí)別,Python 提供了一個(gè)單獨(dú)的日志記錄模塊作為其標(biāo)準(zhǔn)庫(kù)的一部分,以簡(jiǎn)化日志記錄,本文將討論日志記錄 setLevel 及其在 Python 中的工作方式,需要的朋友可以參考下

日志記錄是任何程序員生活中非常有效的工具。 它不僅可以讓我們更好地理解程序的流程,還可以讓我們了解程序執(zhí)行過(guò)程中可能出現(xiàn)的錯(cuò)誤。

Python 提供了一個(gè)單獨(dú)的日志記錄模塊作為其標(biāo)準(zhǔn)庫(kù)的一部分,以簡(jiǎn)化日志記錄。 本文將討論日志記錄 setLevel 及其在 Python 中的工作方式。

Python登錄程序的功能

日志記錄是在軟件運(yùn)行時(shí)跟蹤程序流程的過(guò)程。 但是,如果您沒(méi)有實(shí)現(xiàn)登錄到您的程序中,那么每當(dāng)程序崩潰時(shí),就很難找到發(fā)生問(wèn)題的根源。

通過(guò)在程序中實(shí)現(xiàn)日志記錄,您可以輕松找到問(wèn)題的根源并立即解決。 它在調(diào)試和開(kāi)發(fā)軟件時(shí)非常有用。

有時(shí),人們使用打印語(yǔ)句來(lái)查找軟件中的問(wèn)題。 打印可以解決簡(jiǎn)單腳本的問(wèn)題,但對(duì)于更大、更復(fù)雜的軟件來(lái)說(shuō),它們不是一個(gè)好的選擇。

Python 在其標(biāo)準(zhǔn)庫(kù)中提供了一個(gè)稱為日志記錄的內(nèi)置模塊,該模塊將狀態(tài)消息寫入任何輸出流或文件,以說(shuō)明程序的哪一部分正在運(yùn)行以及導(dǎo)致了什么問(wèn)題。

Python 中的日志消息級(jí)別

Python 中的日志記錄模塊根據(jù)其重要性具有不同的狀態(tài)/日志消息級(jí)別。 因此,日志消息的級(jí)別告訴您該日志消息的重要性。

日志消息的不同級(jí)別如下:DEBUG、INFO、WARNING、ERROR 和 CRITICAL,其中 CRITICAL 的重要性最高。

日志級(jí)別說(shuō)明
DEBUG它用于在軟件中進(jìn)行調(diào)試。 通常會(huì)在出現(xiàn)問(wèn)題時(shí)提供詳細(xì)信息。
INFO它確保程序中的一切正常。
WARNING用來(lái)表示將來(lái)可能會(huì)出現(xiàn)一些問(wèn)題,應(yīng)該予以解決以避免將來(lái)出現(xiàn)問(wèn)題。
ERROR用于表示軟件由于嚴(yán)重問(wèn)題而無(wú)法執(zhí)行特定功能。
CRITICAL此級(jí)別表示導(dǎo)致軟件停止的嚴(yán)重問(wèn)題。

所有這些級(jí)別都是為處理程序或記錄器設(shè)置的,以便在發(fā)生錯(cuò)誤時(shí)可以在適當(dāng)?shù)臅r(shí)間顯示適當(dāng)?shù)南ⅰ?日志記錄級(jí)別在上面根據(jù)它們的重要性進(jìn)行了解釋,第一個(gè)是最不重要的,最后一個(gè)(CRITICAL 級(jí)別)是最重要的。

使用 Python 日志記錄模塊中的 setLevel() 函數(shù)設(shè)置日志記錄級(jí)別

setLevel(level) 函數(shù)用于將記錄器的閾值設(shè)置為指定級(jí)別。 低于指定級(jí)別的日志記錄消息將被忽略,而具有更高嚴(yán)重性的消息將由為記錄器提供服務(wù)的相應(yīng)處理程序發(fā)出。

Python 中的日志記錄有一個(gè)有效級(jí)別的概念。 最初,當(dāng)創(chuàng)建記錄器時(shí),它被設(shè)置為 NOTSET 級(jí)別。

但是,此 NOTSET 不是有效級(jí)別。 有效級(jí)別是在 setLevel(level) 的幫助下明確設(shè)置的級(jí)別。

創(chuàng)建記錄器時(shí),如果未顯式設(shè)置其級(jí)別,則檢查其父記錄器的級(jí)別以獲得記錄器的有效級(jí)別,該級(jí)別將使用 setLevel(level) 顯式設(shè)置。 如果父記錄器也未設(shè)置為有效級(jí)別,則檢查其父記錄器。

該過(guò)程將繼續(xù),直到找到 NOTSET 以外的級(jí)別或到達(dá)根。 根記錄器設(shè)置為默認(rèn)級(jí)別警告; 因此,在這種情況下,root 的默認(rèn)級(jí)別將被視為有效級(jí)別。

現(xiàn)在,讓我們通過(guò)一些代碼示例了解 setLevel(level) 的用法。

import logging
logging.debug('Debug message')
logging.info('Info message')
logging.warning('Warning message')
logging.error('Error message')
logging.critical('Critical message')

輸出:

WARNING:root:Warning message
ERROR:root:Error message
CRITICAL:root:Critical message

如上面的輸出所示,只打印了 WARNING、ERROR 和 CRITICAL 消息,因?yàn)楦涗浧鞯哪J(rèn)級(jí)別 WARNING 已被視為有效級(jí)別,因?yàn)闆](méi)有指定其他記錄器或其父級(jí)。 因此,將打印 WARNING 及之后級(jí)別的所有消息,而忽略不那么重要的消息。

讓我們看一個(gè)例子,記錄器將有效級(jí)別視為父級(jí)別。

import logging
parent_logger = logging.getLogger('parent')
parent_logger.setLevel(4)
child_logger = logging.getLogger('parent.child')
print(parent_logger.getEffectiveLevel())
print(child_logger.getEffectiveLevel())

輸出:

4

4

可以看到,child_logger沒(méi)有設(shè)置有效級(jí)別,所以使用parent_logger的級(jí)別作為有效級(jí)別。

Python 中的日志處理程序

Python 中的處理程序是負(fù)責(zé)將適當(dāng)?shù)娜罩鞠⒂涗浀教幚沓绦虻闹付康牡氐膶?duì)象; 這些處理程序也像記錄器一樣工作。 如果記錄器沒(méi)有設(shè)置處理程序,則會(huì)在其祖先中搜索處理程序。

現(xiàn)在讓我們看看處理程序在日志記錄中的用法:

import logging
logger = logging.getLogger('example')
logger.setLevel(logging.INFO)
fileHandler = logging.FileHandler('p1.log')
fileHandler.setLevel(logging.INFO)
chl = logging.StreamHandler()
chl.setLevel(logging.INFO)
logger.addHandler(fileHandler)
logger.addHandler(chl)
logger.info('Information')

輸出:

Information

我們?cè)谏厦娴拇a中創(chuàng)建了兩個(gè)處理程序:fileHandler 和 chl。 fileHandler 將記錄發(fā)送到 p1.log 文件,chl 處理程序?qū)⒂涗洶l(fā)送到流。

但是,如果未指定流,則使用 sys.stderr。 最后,使用 addHandler 將處理程序添加到記錄器。

現(xiàn)在您一定想知道為什么我們?cè)O(shè)置了兩次級(jí)別:一次用于記錄器,另一次用于處理程序。 您可以刪除處理程序上的 setLevel(),這會(huì)將消息的所有級(jí)別過(guò)濾留給記錄器。

但是,如果您為處理程序和記錄器設(shè)置級(jí)別,則會(huì)出現(xiàn)不同的情況。 記錄器首先根據(jù)級(jí)別過(guò)濾消息; 因此,如果您將記錄器設(shè)置為 WARNING、INFO 或任何更高級(jí)別,并將處理程序設(shè)置為 DEBUG,您將不會(huì)收到任何 DEBUG 日志消息,因?yàn)橛涗浧魇紫葧?huì)忽略它。

同樣,如果您將記錄器設(shè)置為 DEBUG 并將處理程序設(shè)置為任何更高級(jí)別,例如 INFO,您也不會(huì)收到任何 DEBUG 消息,因?yàn)樘幚沓绦驅(qū)⒕芙^它們。 即使記錄器批準(zhǔn)它,處理程序也會(huì)拒絕它(因?yàn)?INFO > DEBUG)。

因此,在為記錄器和處理程序設(shè)置級(jí)別時(shí)應(yīng)該足夠小心,以確保軟件正常工作。

總結(jié)

在本文中,我們討論了日志記錄 setLevel() 及其在 Python 中的工作方式。

日志記錄是一種非常有效的工具,通過(guò)記錄程序的流程并發(fā)現(xiàn)錯(cuò)誤的可能性來(lái)管理軟件或程序的代碼。 對(duì)于 Python 中的日志記錄,我們根據(jù)它們的重要性為不同的日志消息設(shè)置不同的級(jí)別。

所有這些級(jí)別都是使用 setLevel 設(shè)置的,本文對(duì)此進(jìn)行了非常詳細(xì)的解釋。

到此這篇關(guān)于在 Python 中使用 setLevel() 設(shè)置日志級(jí)別的文章就介紹到這了,更多相關(guān)Python setLevel() 設(shè)置日志級(jí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 快速了解Python相對(duì)導(dǎo)入

    快速了解Python相對(duì)導(dǎo)入

    這篇文章主要介紹了快速了解Python相對(duì)導(dǎo)入,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python執(zhí)行流程控制詳情

    Python執(zhí)行流程控制詳情

    這篇文章主要介紹了Python執(zhí)行流程控制,流程控制即控制流程,具體指控制程序的執(zhí)行流程,而程序的執(zhí)行流程分為三種結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu),下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-04-04
  • Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib?提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過(guò)?Matplotlib?繪制的圖形樣式,下面我們就來(lái)看看如何巧妙的運(yùn)用這些參數(shù)吧
    2023-08-08
  • Python實(shí)現(xiàn)pdf轉(zhuǎn)word詳細(xì)代碼

    Python實(shí)現(xiàn)pdf轉(zhuǎn)word詳細(xì)代碼

    在日常工作中,我們經(jīng)常會(huì)遇到需要將PDF文件轉(zhuǎn)換成Word文件的需求。雖然市面上有許多PDF轉(zhuǎn)Word的工具,但是它們通常需要付費(fèi)或者有轉(zhuǎn)換后的格式問(wèn)題,這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • 詳解Python中深淺拷貝的使用及注意事項(xiàng)

    詳解Python中深淺拷貝的使用及注意事項(xiàng)

    Python中的深淺拷貝是經(jīng)常被使用的概念,對(duì)于初學(xué)者來(lái)說(shuō)可能會(huì)比較難以理解,本文將詳細(xì)闡述Python深淺拷貝的概念、使用場(chǎng)景、注意事項(xiàng)以及如何實(shí)現(xiàn)深淺拷貝
    2023-04-04
  • pytorch制作自己的LMDB數(shù)據(jù)操作示例

    pytorch制作自己的LMDB數(shù)據(jù)操作示例

    這篇文章主要介紹了pytorch制作自己的LMDB數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了pytorch使用lmdb的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • Python使用selenium實(shí)現(xiàn)網(wǎng)頁(yè)用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能

    Python使用selenium實(shí)現(xiàn)網(wǎng)頁(yè)用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能

    這篇文章主要介紹了Python使用selenium實(shí)現(xiàn)網(wǎng)頁(yè)用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能,實(shí)現(xiàn)思路很簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    這篇文章主要介紹了python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python中l(wèi)ist初始化方法示例

    Python中l(wèi)ist初始化方法示例

    這篇文章主要介紹了Python中l(wèi)ist初始化方法,分析了list初始化常用的方法與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下
    2016-09-09
  • 純用NumPy實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼

    純用NumPy實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼

    這篇文章主要介紹了純用NumPy實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論