← Python 学习

Python 学习

使用logging包滚动记录日志

·Python 学习

详细介绍Python logging模块的高级应用,重点讲解TimedRotatingFileHandler和RotatingFileHandler的使用方法。包含日志格式定制、文件轮转配置、日志级别设置等实用功能,并提供完整的代码示例,帮助开发者实现专业的日志管理系统。

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配置