2026-06-30 00:23:22
Python logging 模块:从入门到精通的权威指南
引言日志记录是软件开发中至关重要的环节,它能够记录应用程序事件、错误和调试信息,帮助开发者快速定位问题并优化性能。Python 的 logging 模块提供了一个灵活且强大的框架,支持不同严重程度的日志消息,并可将日志输出到多种目的地(如控制台、文件、邮件等)。本文将系统介绍 logging 模块的核心功能、配置方法及最佳实践,助您从入门到精通。
1. 安装与基础配置1.1 安装logging 是 Python 标准库的一部分,无需额外安装。若需扩展功能(如第三方日志处理器),可通过 pip 安装:
pip install logging1.2 基础配置可通过代码直接配置,或使用配置文件(如 logging.conf)。以下为代码配置示例:
import logging# 创建 Logger 对象logger = logging.getLogger(__name__)logger.setLevel(logging.DEBUG) # 设置日志级别# 创建控制台处理器console_handler = logging.StreamHandler()console_handler.setLevel(logging.INFO)# 创建文件处理器file_handler = logging.FileHandler("app.log")file_handler.setLevel(logging.DEBUG)# 设置日志格式formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")console_handler.setFormatter(formatter)file_handler.setFormatter(formatter)# 添加处理器到 Loggerlogger.addHandler(console_handler)logger.addHandler(file_handler)2. 日志级别logging 模块定义了五个标准级别(从低到高):
使用示例:
logger.debug("调试信息") # 仅在 DEBUG 级别下记录logger.warning("警告:磁盘空间不足")logger.error("错误:文件未找到")3. 核心组件3.1 Logger(日志器)将日志发送到不同目的地,常用内置处理器:
示例:
from logging.handlers import RotatingFileHandlerrotating_handler = RotatingFileHandler( "app.log", maxBytes=1024, backupCount=3)3.3 Formatter(格式器)自定义日志格式,常用字段:
示例:
formatter = logging.Formatter( "%(asctime)s [%(levelname)s] %(name)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S")4. 高级功能4.1 过滤器(Filter)通过自定义过滤器控制日志输出(如仅记录特定模块的日志):
class MyFilter(logging.Filter): def filter(self, record): return "sensitive" not in record.getMessage()logger.addFilter(MyFilter())4.2 异常捕获使用 exc_info 参数记录异常堆栈:
try: 1 / 0except Exception: logger.error("发生异常", exc_info=True)4.3 处理器链多个处理器可协同工作(如同时输出到控制台和文件):
logger.addHandler(console_handler)logger.addHandler(file_handler)5. 最佳实践Python 的 logging 模块通过分层设计(Logger-Handler-Formatter)实现了灵活的日志管理。掌握其核心功能(级别、处理器、格式)和高级技巧(过滤器、异常捕获)后,您能够高效地记录、分析和调试应用程序日志,显著提升开发效率和系统可维护性。建议结合实际项目需求,逐步优化日志策略。