Python logging模块详解:日志级别、核心组件与配置示例

Theo
Theo
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍Python logging模块的核心概念,包括DEBUG至CRITICAL五种日志级别的定义与优先级,以及Logger、Handler和Formatter三大组件的职责与协作机制。通过控制台输出、文件记录及默认Logger配置的代码示例,帮助开发者快速掌握Python日志记录的最佳实践。

一、日志级别

1. 级别定义

logging模块内置了5种日志级别,优先级从高到低依次为:CRITICAL > ERROR > WARNING > INFO > DEBUG。不同级别对应不同的日志重要性,其中CRITICAL优先级最高,DEBUG优先级最低。具体而言

  • debug:输出所有级别的日志,通常用于代码调试阶段;
  • info:输出info、warning、error和critical级别的日志,用于确认代码是否按预期运行;
  • warning:输出warning、error和critical级别的日志,用于提示潜在问题;
  • error:输出error和critical级别的日志,用于警示严重错误;
  • critical:仅输出critical级别日志,用于提示极其严重的错误;

2. 简单示例


import logging
# 默认级别为warning
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")

输出结果如下:

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

3. 指定级别


import logging
# 指定级别为debug,将输出所有级别的日志
logging.basicConfig(level=logging.DEBUG)
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")

当指定日志级别后,输出结果如下:

DEBUG:root:Debug INFO:root:Info WARNING:root:Warning ERROR:root:Error CRITICAL:root:Critical

二、基本概念

1. Logger

Logger是Logging模块的核心主体,主要承担以下职责:

  • 为程序提供记录日志的接口(即logger具备debug、info、warning、error、critical五个方法);
  • 判断日志所属级别,并决定是否进行过滤;
  • 根据日志级别将日志分发至不同的handler;

2. Handler

Handler的主要职责是根据日志级别对日志进行分发。例如,根据日志级别决定将日志输出到屏幕或写入文件。

3. Formatter

Formatter用于指定日志的输出格式。

通常情况下,一个Logger可以包含多个Handler,而每个Handler可以指定一个Formatter。

三、示例

1. 日志输出至控制台


import sys
import logging
logger = logging.getLogger(__name__)
formatter = logging.Formatter("%(asctime)s - %(message)s")
handler = logging.StreamHandler(stream=sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.debug("Debug")
logger.info("Info")
logger.warning("Warning")
logger.error("Error")
logger.critical("Critical")

2. 日志输出至文件


import logging
logger = logging.getLogger(__name__)
formatter = logging.Formatter("%(asctime)s - %(message)s")
# 使用FileHandler就可以将日志输出至文件
handler = logging.FileHandler("./test.log", mode='w')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.debug("Debug")
logger.info("Info")
logger.warning("Warning")
logger.error("Error")
logger.critical("Critical")

四、默认Logger

Logging模块提供了默认的Logger,无需显式创建Logger、Handler和Formatter等对象。使用示例如下:


import logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s")
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")

总结

本文到此结束,希望能对您有所帮助。欢迎继续关注本站获取更多技术内容!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。