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/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

发表回复

登录后才能评论