Python logging模块基础用法与日志文件轮转配置

追风的人
追风的人
发布时间:2026-10-12 | 2人浏览过
原创

在实际开发中,print语句缺乏时间戳与日志级别,难以满足排查需求。通过Python内置的logging模块,可快速配置信息格式,支持将日志输出至控制台或定向写入文件,并结合TimedRotatingFileHandler实现按天自动切割与历史保留,大幅提升项目调试效率与维护能力。

原生 print 函数的局限与 logging 目标

编写业务逻辑或数据管道时,开发者常依赖 print 临时查看变量状态。该方法的问题在于输出内容单一,无法附带执行时间、日志等级及来源上下文,一旦工程规模扩大或部署至服务器,排查链路中断的瓶颈便会显著增加。本文以 logging 模块为核心,演示如何替代基础打印,构建标准化的日志记录方案。

输出至控制台的基础配置

第1步:定义格式字符串并初始化全局日志器

目的:替代 print 获取带时间戳和级别的标准化终端输出。入口:脚本顶层导入 logging 模块。动作:调用 basic_config 函数设定日志级别与输出模板。重要参数:level=logging.DEBUG 允许捕获全量消息,format 参数配置 %{asctime}s(时间)、%{levelname}s(等级)和 %{message}s(内容)。可观察的完成状态:终端执行脚本后,立即打印符合 YYYY-MM-DD HH:MM:SS,mmm - INFO - 清空重建表 格式的行文。

import logging

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)

logging.info("清空重建表")

写入文件与自动切割轮转

第1步:创建按日分割的文件处理器并绑定日志器

目的:实现日志持久化存储并防止单文件随运行时长无限膨胀。入口:引入 logging 与 logging.handlers 模块。动作:实例化 TimedRotatingFileHandler 指定归档策略,随后通过 root logger 将其挂载至现有日志流。重要参数:filename 指向写入路径,when='D' 定义按天触发切割,interval=1 为每日一次,backupCount=7 限制磁盘仅保留最近7份归档。可观察的完成状态:当前工作目录生成 target_log.log,程序运行后持续追加新日志;次日零点自动将该文件重命名附加日期后缀,后续写入进入新文件。

import logging
import logging.handlers
import os

LOG_FILE = "target_log.log"
# 基础配置仅控制控制台输出层级,避免与文件处理器冲突
logging.basicConfig(level=logging.INFO, format="[%(levelname)s] %(asctime)s [%(module)s:%(lineno)d] %(message)s")

# 配置按天轮转的文件 Handler
time_hdls = logging.handlers.TimedRotatingFileHandler(
    LOG_FILE, when='D', interval=1, backupCount=7
)
time_hdls.suffix = "%Y-%m-%d.log"
logging.getLogger().addHandler(time_hdls)

logging.info("hello world")

完成判断与常见排错

确认配置生效后,可通过以下维度验证:

  1. 控制台是否按指定模板实时刷新日志。
  2. 指定路径下是否成功创建目标 .log 文件,且内容与控制台一致。
  3. 修改系统时钟或等待周期结束后,是否自动产生带时间戳的备份文件,且旧文件数量未超过设定的保留阈值。

若发现日志重复写入两份内容,通常是同时使用了 basicConfig(filename=...) 与手动 addHandler,两者会各自独立打开同一个文件句柄导致覆盖或交错。建议解除 basic_config 的 filename 参数,统一由独立的 Handler 接管文件落盘。若终端无任何输出,检查是否正确导入了 handlers 包,或临时调低 level 参数测试拦截逻辑。遇到权限拒绝错误时,需确保运行用户对目标目录具备读写权限。

简要总结

脱离简陋的 print 调试习惯,建立结构化 logging 体系是工程化的必经之路。掌握基础格式化输出后,结合旋转切割策略即可轻松应对生产环境的流量增长与审计追溯。以上就是Python logging模块实现日志打印的详细配置指南,更多关于Python环境调试与日志管理的技巧资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表