Python logging模块详解:日志等级、配置与实战应用

小林子
小林子
发布时间:2026-10-14| 7人浏览过
原创

本文详细介绍Python标准库logging模块的使用方法。涵盖DEBUG至CRITICAL五个日志等级的定义与区别,讲解如何配置日志输出格式、控制台输出及文件保存。通过mini-web项目案例,演示如何在实际开发中统一配置并应用日志功能,帮助开发者高效排查Bug与分析程序运行状态。

logging模块简介

logging模块简介

在现实场景中,日志记录至关重要,例如银行转账需留存流水,飞机配备黑匣子记录飞行数据。在Python程序中,若需追踪运行时的日志信息,可通过内置的logging模块实现。

Python提供了logging包来处理日志记录任务。

记录程序日志的主要目的包括: 1. 直观掌握程序运行状态 2. 分析用户操作行为及偏好 3. 协助开发人员快速定位并修复Bug

logging日志等级概述

logging日志等级概述

日志等级共分为5级,按严重程度由低到高排列如下: 1. DEBUG 2. INFO 3. WARNING 4. ERROR 5. CRITICAL

各日志等级的具体说明如下:

  • DEBUG:用于程序调试阶段,输出详细调试信息。
  • INFO:用于程序正常运行时的常规信息记录。
  • WARNING:表示程序未按预期运行,但尚未构成错误,例如用户登录时密码输入错误。
  • ERROR:表示程序发生错误,例如IO操作失败等异常情况。
  • CRITICAL:表示极其严重的问题,导致程序无法继续运行,如磁盘空间耗尽。此类情况较少见。
  • 默认日志等级为WARNING,即仅记录WARNING级别及以上的信息。
  • 日志等级从低到高的顺序为:DEBUG < INFO < WARNING < ERROR < CRITICAL。

logging模块的使用方式

logging模块的使用方式

在logging包中,记录日志主要有两种输出方式:

1. 直接输出到控制台 2. 保存至日志文件

将日志信息输出到控制台的示例代码如下:


import logging

logging.debug('这是⼀个debug级别的⽇志信息')
logging.info('这是⼀个info级别的⽇志信息')
logging.warning('这是⼀个warning级别的⽇志信息')
logging.error('这是⼀个error级别的⽇志信息')
logging.critical('这是⼀个critical级别的⽇志信息')

运行结果如下:

WARNING:root:这是一个warning级别的日志信息 ERROR:root:这是一个error级别的日志信息 CRITICAL:root:这是一个critical级别的日志信息

说明: 上述结果仅显示大于等于WARNING级别的日志,这表明默认日志级别已设置为WARNING。

设置logging日志等级与输出格式的方法如下:


import logging
# 设置⽇志等级和输出⽇志格式
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('这是⼀个debug级别的⽇志信息')

logging.info('这是⼀个info级别的⽇志信息')
logging.warning('这是⼀个warning级别的⽇志信息')
logging.error('这是⼀个error级别的⽇志信息')
logging.critical('这是⼀个critical级别的⽇志信息')

运行结果如下:

2019-02-13 20:41:33,080 - hello.py[line:6] - DEBUG: 这是一个debug级别的日志信息 2019-02-13 20:41:33,080 - hello.py[line:7] - INFO: 这是一个info级别的日志信息 2019-02-13 20:41:33,080 - hello.py[line:8] - WARNING: 这是一个warning级别的日志信息 2019-02-13 20:41:33,080 - hello.py[line:9] - ERROR: 这是一个error级别的日志信息 2019-02-13 20:41:33,080 - hello.py[line:10] - CRITICAL: 这是一个critical级别的日志信息

代码说明:

level参数用于设置日志等级,format参数用于定义日志输出格式。各参数含义如下:

  • %(levelname)s:打印日志级别名称。
  • %(filename)s:打印当前执行程序的名称。
  • %(lineno)d:打印日志所在的代码行号。
  • %(asctime)s:打印日志生成的时间。
  • %(message)s:打印具体的日志信息内容。

将日志信息保存至日志文件的示例代码如下:


import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
filename="log.txt",
filemode="w")
logging.debug('这是⼀个debug级别的⽇志信息')
logging.info('这是⼀个info级别的⽇志信息')
logging.warning('这是⼀个warning级别的⽇志信息')
logging.error('这是⼀个error级别的⽇志信息')
logging.critical('这是⼀个critical级别的⽇志信息')

运行结果:

logging日志在mini-web项目中的应用

logging日志在mini-web项目中的应用

以下展示web.py程序中使用logging日志的示例:

1. 在程序入口模块中配置logging日志设置。


import socket
import threading
import sys
import framework
import logging
# logging⽇志的配置
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
filename="log.txt",
filemode="w")

2. 输出INFO级别日志的示例代码:


# 判断是否是动态资源请求
if request_path.endswith(".html"):
"""这⾥是动态资源请求,把请求信息交给框架处理"""
logging.info("动态资源请求:" + request_path)
...
else:
"""这⾥是静态资源请求"""
logging.info("静态资源请求:" + request_path)

3. 输出WARNING级别日志的示例代码:


# 获取命令⾏参数判断⻓度
if len(sys.argv) != 2:
print("执⾏命令如下: python3 xxx.py 9000")
logging.warning("⽤⼾在命令⾏启动程序参数个数不正确!")
return
# 判断端⼝号是否是数字
if not sys.argv[1].isdigit():
print("执⾏命令如下: python3 xxx.py 9000")
logging.warning("⽤⼾在命令⾏启动程序参数不是数字字符串!")
return

framework.py程序中使用logging日志的示例:

1. 输出ERROR级别日志的示例代码:


# 处理动态资源请求
def handle_request(env):
# 获取动态请求资源路径
request_path = env["request_path"]
print("接收到的动态资源请求:", request_path)
# 遍历路由列表,选择执⾏的函数
for path, func in route_list:
if request_path == path:
result = func()
return result
else:
logging.error("没有设置相应的路由:" + request_path)
# 没有找到动态资源
result = not_found()
return result

说明: logging日志配置信息仅在程序入口模块设置一次,即可在整个程序中生效。 logging.basicConfig函数用于执行日志配置操作。

小结

小结

使用Python记录程序日志信息时,应调用logging包。 logging日志包含5个等级: 1. DEBUG 2. INFO 3. WARNING 4. ERROR 5. CRITICAL

用于打印(记录)日志的函数共有5个: 1. logging.debug函数:用于打印(记录)DEBUG级别的日志信息。 2. logging.info函数:用于打印(记录)INFO级别的日志信息。 3. logging.warning函数:用于打印(记录)WARNING级别的日志信息。 4. logging.error函数:用于打印(记录)ERROR级别的日志信息。 5. logging.critical函数:用于打印(记录)CRITICAL级别的日志信息。

至此,关于Python中logging日志的四个等级及使用的介绍已完成。如需了解更多Python logging日志相关内容,请搜索本站往期文章或继续浏览后续文章,感谢大家的支持!

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

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 算法库。