logging.level.root詳解

一、概述

logging位於Python標準庫中,提供了靈活和易於擴展的日誌記錄框架。logging.level.root是Python logging模塊中最常用的配置項之一。在一個Python程序中,只有一個根Logger實例,即logging.getLogger()的返回值。根Logger可以被任意數量的Handler、Filter、Formatter實例所關聯,每個Handler、Filter、Formatter實例則用於實現不同的功能。logging.level.root參數配置,即是配置根Logger的日誌級別。

二、日誌級別

日誌級別描述了日誌記錄的嚴重程度,Python logging模塊定義了5個級別,以及一個最低級別NotSet:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET。不同級別的含義如下:

CRITICAL:導致應用程序停止運行的嚴重錯誤;
ERROR   :導致應用程序部分停止運行的錯誤;
WARNING :發生潛在錯誤或異常情況;
INFO    :證明事情按預期工作;
DEBUG   :詳細信息,通常用於調試;
NOTSET  :沒有設置日誌級別,使用父Logger的日誌級別(缺省)。 

當我們配置logging.level.root時,所有的logger都會以此為標準進行日誌級別的設置。如果子Logger沒有單獨設置日誌級別,那麼它會繼承其父Logger的日誌級別。

三、logging.level.root配置

logging.level.root的默認值為WARNING。 意味着只有WARNING、ERROR、CRITICAL三個級別的日誌才會輸出。因此,如果要將所有級別的日誌都輸出到控制台,可以將logging.level.root的值設置為DEBUG,如下:

    import logging

    logging.basicConfig(level=logging.DEBUG)

    logging.debug("debug: This is a debug message")
    logging.info("info: This is an info message")
    logging.warning("warning: This is a warning message")
    logging.error("error: This is an error message")
    logging.critical("critical: This is a critical message")

上述代碼中,logging.basicConfig()中的level參數設置為DEBUG,表示所有級別的日誌都會輸出。根據日誌級別的不同,輸出如下:

    debug: This is a debug message
    info: This is an info message
    warning: This is a warning message
    error: This is an error message
    critical: This is a critical message

四、logging.level.root與子Logger

除了rootLogger之外,程序也可以使用其他的Logger實例。一個Logger實例可以有一個或多個父Logger,多個父Logger之間用”.”進行分割。Logger實例打印日誌時,會用自身的日誌級別和所有父Logger的日誌級別中的最大級別進行比較,從而確定這條日誌是否會輸出。

例如,如果實例logger1有3個父實例getRootLogger、parent1、parent2,日誌級別分別設置為WARNING、INFO、DEBUG,那麼logger1的日誌級別就是DEBUG。這意味着在logger1打印日誌時,如果日誌級別大於等於DEBUG,那麼這條日誌就會輸出。

五、logging.level.root與日誌記錄器

日誌記錄器,即定義了應用程序運行期間如何記錄和格式化日誌的類。Python的logging模塊定義了三個記錄器類,分別是:Logger、Filter和Handler。由於logging.level.root控制了所有的子Logger的日誌級別,因此在設置日誌記錄器的時候,通常也要設置日誌級別,以便根據不同的日誌級別選擇不同的Logger、Filter和Handler。

例如,下面的代碼定義了一個名為”myLogger”的Logger實例,並設置了一個Handler和一個Formatter。此時,由於logging.level.root的默認值是WARNING,只有級別大於WARNING的日誌才會被輸出。

    import logging
    import sys

    myLogger = logging.getLogger("myLogger")
    myLogger.setLevel(logging.DEBUG)

    handler = logging.StreamHandler(sys.stdout)
    handler.setLevel(logging.WARNING)

    formatter = logging.Formatter('%(levelname)s - %(asctime)s - %(message)s')
    handler.setFormatter(formatter)

    myLogger.addHandler(handler)

    myLogger.debug("This is a debug message")
    myLogger.error("This is an error message")

輸出如下:

    ERROR - 2021-08-10 10:39:28,020 - This is an error message

六、總結

logging.level.root是Python logging模塊中非常重要的一個參數,它控制着所有Logger實例的日誌級別。在應用程序運行期間,如果需要對日誌進行更多的細分和控制,可以使用Logger、Filter和Handler這三個類進行更精細的配置。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/306628.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 12:01
下一篇 2025-01-02 12:01

相關推薦

  • Duplicate Data Logging Variable Name ‘scopedata1’的解決方法

    我們在進行編程開發過程中,很可能會碰到“scopedata1”數據日誌變量名重複的問題,這會導致程序運行錯誤或者異常,那麼該如何解決這個問題呢?接下來我們將從多個方面對這個問題做詳…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25

發表回復

登錄後才能評論