使用logging包滚动记录日志

Jun 11, 2025·
Orochi
Orochi
· 1 min read

Python日志管理最佳实践

基础配置说明

logging模块是Python的内置日志系统,提供了灵活的日志记录功能。本文重点介绍如何使用TimedRotatingFileHandler实现日志文件的自动轮转。

关键特性

  • 支持按时间轮转日志文件
  • 自定义日志格式
  • 控制日志文件保留数量
  • 灵活的日志级别管理

代码实现

1. 基本配置示例

import logging
from logging.handlers import TimedRotatingFileHandler
from logging.handlers import RotatingFileHandler

# 定义日志格式
log_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
formatter = logging.Formatter(log_fmt)

# 创建TimedRotatingFileHandler对象
log_file_handler = TimedRotatingFileHandler(
    filename="logs/app.log",  # 日志文件路径
    when="D",                 # 按天轮转
    interval=1,              # 每天轮转一次
    backupCount=30           # 保留30天的日志文件
)

# 设置日志格式
log_file_handler.setFormatter(formatter)

# 配置根日志记录器
logging.basicConfig(level=logging.INFO)
log = logging.getLogger()
log.addHandler(log_file_handler)

# 使用示例
log.info("read config.ini")

2. 高级配置选项

可以通过以下方式自定义日志文件名格式:

# 自定义日志文件后缀格式
log_file_handler.suffix = "%Y-%m-%d_%H-%M.log"

# 使用正则表达式匹配日志文件
import re
log_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}.log$")

使用建议

  1. 根据应用需求选择合适的轮转策略
  2. 合理设置日志级别,避免日志文件过大
  3. 定期清理过期日志文件
  4. 确保日志目录具有适当的写入权限

常见问题解决

  1. 日志文件权限问题:确保应用有写入权限
  2. 日志轮转不生效:检查时间设置和文件命名
  3. 日志格式错误:验证formatter配置
Orochi
Authors
充满活力和热情的软件从业者
在不同的公司和项目中工作过,担任过各种职务,做过各类项目(如企业站点、内部中台、边缘设备服务、客户端开发、大模型训练、大模型适配和任务调度等等),广泛的视野和经验.