详解Python TimedRotatingFileHandler 多进程环境下的问题和解决方法
import logging.handlers
import os
import time
# 创建日志文件的路径
log_file_path = '/path/to/your/log/directory/app.log'
# 创建TimedRotatingFileHandler,日志按时间轮转,每天轮转一次
rotating_handler = logging.handlers.TimedRotatingFileHandler(
log_file_path,
when='midnight', # 每天午夜轮转
backupCount=30, # 保留30个备份
encoding='utf-8' # 日志文件编码
)
# 创建日志记录的格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
rotating_handler.setFormatter(formatter)
# 创建一个日志器,并设置日志级别
logger = logging.getLogger('myapp')
logger.setLevel(logging.INFO)
logger.addHandler(rotating_handler)
# 测试日志记录
for i in range(10):
logger.info(f'This is a test log message {i}')
time.sleep(10) # 等待10秒,确保时间超过午夜
这段代码演示了如何在Python中使用TimedRotatingFileHandler
来创建日志文件,并且每天午夜自动轮转日志文件。同时,展示了如何在多进程环境中安全地使用日志模块,避免文件操作冲突。
评论已关闭