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

Python 中如何使用 setLevel() 設置日志級別

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

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

Python 提供了一個單獨的日志記錄模塊作為其標準庫的一部分,以簡化日志記錄。 本文將討論日志記錄 setLevel 及其在 Python 中的工作方式。

Python登錄程序的功能

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

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

有時,人們使用打印語句來查找軟件中的問題。 打印可以解決簡單腳本的問題,但對于更大、更復雜的軟件來說,它們不是一個好的選擇。

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

Python 中的日志消息級別

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

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

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

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

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

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

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

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

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

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

現(xiàn)在,讓我們通過一些代碼示例了解 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 消息,因為根記錄器的默認級別 WARNING 已被視為有效級別,因為沒有指定其他記錄器或其父級。 因此,將打印 WARNING 及之后級別的所有消息,而忽略不那么重要的消息。

讓我們看一個例子,記錄器將有效級別視為父級別。

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沒有設置有效級別,所以使用parent_logger的級別作為有效級別。

Python 中的日志處理程序

Python 中的處理程序是負責將適當?shù)娜罩鞠⒂涗浀教幚沓绦虻闹付康牡氐膶ο螅?這些處理程序也像記錄器一樣工作。 如果記錄器沒有設置處理程序,則會在其祖先中搜索處理程序。

現(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

我們在上面的代碼中創(chuàng)建了兩個處理程序:fileHandler 和 chl。 fileHandler 將記錄發(fā)送到 p1.log 文件,chl 處理程序?qū)⒂涗洶l(fā)送到流。

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

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

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

同樣,如果您將記錄器設置為 DEBUG 并將處理程序設置為任何更高級別,例如 INFO,您也不會收到任何 DEBUG 消息,因為處理程序?qū)⒕芙^它們。 即使記錄器批準它,處理程序也會拒絕它(因為 INFO > DEBUG)。

因此,在為記錄器和處理程序設置級別時應該足夠小心,以確保軟件正常工作。

總結(jié)

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

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

所有這些級別都是使用 setLevel 設置的,本文對此進行了非常詳細的解釋。

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

相關文章

  • 快速了解Python相對導入

    快速了解Python相對導入

    這篇文章主要介紹了快速了解Python相對導入,具有一定借鑒價值,需要的朋友可以參考下
    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),下文詳細介紹需要的小伙伴可以參考一下
    2022-04-04
  • Matplotlib繪圖基礎之配置參數(shù)詳解

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

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

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

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

    詳解Python中深淺拷貝的使用及注意事項

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

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

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

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

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

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

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

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

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

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

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

最新評論