在开发 Python 应用程序时,日志记录(Logging)是不可或缺的一部分。它能帮助我们追踪程序运行状态、排查错误、监控性能等。而 Python 日志处理器 正是实现这些功能的核心组件之一。本文将带你从零开始,详细讲解如何使用 Python 的 logging 模块,配置不同类型的日志处理器,并输出清晰、结构化的日志信息。

在 Python 的 logging 模块中,日志处理器 负责将日志记录(Log Record)发送到指定的目标位置,比如控制台、文件、网络服务等。你可以为同一个日志器(Logger)添加多个处理器,从而实现“一条日志,多处输出”。
常见的处理器类型包括:
StreamHandler:输出到控制台(如 sys.stdout)FileHandler:写入到文件RotatingFileHandler:按文件大小轮转的日志文件TimedRotatingFileHandler:按时间(天/小时)轮转的日志文件下面是一个最简单的日志记录示例,使用 StreamHandler 将日志打印到终端:
import logging# 创建一个 loggerlogger = logging.getLogger('my_logger')logger.setLevel(logging.DEBUG)# 创建一个 handler,用于输出到控制台handler = logging.StreamHandler()handler.setLevel(logging.DEBUG)# 创建一个 formatter,定义日志格式formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)# 将 handler 添加到 loggerlogger.addHandler(handler)# 测试日志logger.info('这是一条信息日志')logger.warning('这是一条警告日志')运行上述代码,你将在控制台看到类似以下输出:
2024-06-01 10:30:45,123 - my_logger - INFO - 这是一条信息日志2024-06-01 10:30:45,124 - my_logger - WARNING - 这是一条警告日志在实际项目中,我们通常希望日志既能在控制台实时查看,又能保存到文件中供后续分析。这时可以为同一个 logger 添加多个处理器:
import logging# 创建 loggerlogger = logging.getLogger('dual_logger')logger.setLevel(logging.DEBUG)# 控制台处理器console_handler = logging.StreamHandler()console_handler.setLevel(logging.INFO)console_formatter = logging.Formatter('[CONSOLE] %(levelname)s - %(message)s')console_handler.setFormatter(console_formatter)# 文件处理器file_handler = logging.FileHandler('app.log', encoding='utf-8')file_handler.setLevel(logging.DEBUG)file_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s')file_handler.setFormatter(file_formatter)# 添加处理器logger.addHandler(console_handler)logger.addHandler(file_handler)# 测试logger.debug('这条只写入文件')logger.info('这条会显示在控制台并写入文件')注意:这里控制台只显示 INFO 及以上级别的日志,而文件记录所有 DEBUG 级别以上的日志,体现了处理器的灵活过滤能力。
当日志持续增长时,单个日志文件可能变得非常大,影响读取和管理。RotatingFileHandler 可以在文件达到指定大小后自动创建新文件:
import loggingfrom logging.handlers import RotatingFileHandlerlogger = logging.getLogger('rotating_logger')logger.setLevel(logging.INFO)# 最大文件大小为 1MB,保留最多5个备份文件rotating_handler = RotatingFileHandler( 'rotating_app.log', maxBytes=1_000_000, # 1MB backupCount=5, encoding='utf-8')formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')rotating_handler.setFormatter(formatter)logger.addHandler(rotating_handler)# 模拟大量日志for i in range(10000): logger.info(f'这是第 {i+1} 条日志')运行后,你会看到 rotating_app.log、rotating_app.log.1、rotating_app.log.2 等文件,有效控制了单个文件的体积。
合理使用 Python 日志处理器 能极大提升项目的可维护性。以下是几点建议:
getLogger(__name__) 创建模块级 logger,便于定位问题print(),统一使用 logging通过本文,你应该已经掌握了 logging模块 的基本用法、如何配置多种 日志处理器,以及如何实现灵活的 日志配置。无论你是初学者还是有一定经验的开发者,正确使用 Python日志记录 机制都将让你的代码更加健壮和专业。
现在就去优化你的项目日志吧!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122861.html