当前位置:首页 > Python > 正文

Python日志记录完全指南(从入门到精通logging模块)

在开发 Python 应用程序时,记录程序运行状态和错误信息是非常重要的。Python 标准库中的 logging 模块 提供了一套灵活、强大的日志记录机制。无论你是初学者还是有经验的开发者,掌握 Python logging模块 都能显著提升你的调试效率和系统可观测性。

Python日志记录完全指南(从入门到精通logging模块) Python logging模块 日志记录教程 Python日志配置 logging使用方法 第1张

一、为什么需要日志?

相比简单的 print() 输出,日志具有以下优势:

  • 可以设置不同级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)
  • 可将日志输出到文件、控制台、网络等多种目标
  • 支持格式化输出(时间、模块名、行号等)
  • 生产环境中可动态调整日志级别,无需修改代码

二、logging 模块基本用法

最简单的使用方式如下:

import logging# 配置日志基本设置logging.basicConfig(level=logging.INFO)# 记录不同级别的日志logging.debug("这是调试信息")logging.info("程序正常运行")logging.warning("警告:磁盘空间不足")logging.error("发生错误")logging.critical("严重错误!")

运行上述代码,你会看到除了 debug 级别外,其他日志都会输出,因为默认级别是 INFO,低于该级别的日志(如 DEBUG)会被忽略。

三、日志级别详解

logging 模块定义了以下5个标准日志级别(数值越小,级别越低):

级别 数值 用途
DEBUG 10 详细信息,通常仅在诊断问题时使用
INFO 20 确认程序按预期工作
WARNING 30 表明发生了一些意外,或即将出现问题(如磁盘空间不足)
ERROR 40 由于更严重的问题,程序某些功能无法执行
CRITICAL 50 严重错误,程序可能无法继续运行

四、高级配置:自定义格式与输出文件

你可以通过 basicConfig 设置日志格式和输出目标:

import logginglogging.basicConfig(    level=logging.DEBUG,    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',    datefmt='%Y-%m-%d %H:%M:%S',    filename='app.log',    filemode='a')logging.info("这条日志将写入 app.log 文件")

上面的配置会:

  • 记录所有级别(DEBUG 及以上)的日志
  • 使用指定的时间格式(如 2024-06-01 10:30:45)
  • 将日志追加写入 app.log 文件

五、使用 Logger 对象(推荐方式)

在大型项目中,建议为每个模块创建独立的 Logger,这样便于管理和过滤:

import logging# 创建一个名为 'my_app' 的 loggerlogger = logging.getLogger('my_app')logger.setLevel(logging.DEBUG)# 创建 handler(输出到控制台)handler = logging.StreamHandler()handler.setLevel(logging.INFO)# 创建 formatter 并添加到 handlerformatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)# 将 handler 添加到 loggerlogger.addHandler(handler)# 使用 logger 记录日志logger.info("这是来自 my_app 的信息")logger.warning("注意:这是一个警告")

这种方式让你可以为不同的模块设置不同的日志行为,是专业开发中的最佳实践。

六、常见问题与技巧

1. 避免重复日志:如果你发现日志被打印多次,可能是因为多次添加了 handler。可以在添加前检查:

if not logger.handlers:    logger.addHandler(handler)

2. 记录异常信息:使用 exc_info=True 可以自动记录完整的异常堆栈:

try:    result = 10 / 0except Exception as e:    logging.error("计算出错", exc_info=True)

七、总结

通过本教程,你已经掌握了 Python logging模块 的核心用法,包括基本配置、日志级别、格式化输出、文件写入以及高级 Logger 对象的使用。合理使用日志不仅能帮助你快速定位问题,还能提升系统的可维护性。

记住,在实际项目中,应根据环境(开发/测试/生产)配置不同的日志级别和输出方式。掌握这些 Python日志配置 技巧,将使你成为一名更专业的开发者。

现在就去试试吧!用 logging使用方法 替代你的 print() 语句,开启高效调试之旅。如果你刚开始学习,这份 日志记录教程 就是你最好的起点。