logging.FileHandler
和 logging.handlers.RotatingFileHandler
都是 Python 标准库 logging
模块中的日志处理器(handler),用于将日志消息写入文件。它们的主要区别在于日志文件的滚动策略。
mode='w'
表示以写入模式打开文件,如果文件已存在,则会清空文件内容。这种模式仅适用于 logging.FileHandler
,因为 logging.FileHandler
每次写入日志时都会覆盖文件内容。
而 logging.handlers.RotatingFileHandler
需要保留历史日志文件,因此不能使用 mode='w'
,否则每次滚动日志文件时都会清空文件内容。
对于 logging.handlers.RotatingFileHandler
,应该使用默认的 mode='a'
(追加模式),这样每次写入日志时都会追加到文件末尾,而不会清空文件内容。
import logging
from logging.handlers import RotatingFileHandler
# 配置日志处理器
file_handler = RotatingFileHandler('app.log', maxBytes=10*1024*1024, backupCount=5)
file_handler.setLevel(logging.INFO)
# 配置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 配置日志记录器
logger = logging.getLogger('my_app')
logger.addHandler(file_handler)
# 写入日志
logger.info('This is an info message.')
通过上述配置,RotatingFileHandler
会自动滚动日志文件,并保留最多 5 个历史日志文件,每个文件最大为 10MB。这样可以确保日志文件不会无限增长,同时保留必要的历史日志信息。
领取专属 10元无门槛券
手把手带您无忧上云