【发布时间】:2018-02-02 08:31:01
【问题描述】:
我这样设置TimedRotatingFileHandler:
import logging as logging
from logging.handlers import TimedRotatingFileHandler
import os
import time
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# new file every minute
rotation_logging_handler = TimedRotatingFileHandler('logs/log',
when='m',
interval=1,
backupCount=5)
rotation_logging_handler.setLevel(logging.DEBUG)
format = u'%(asctime)s\t%(levelname)s\t%(filename)s:%(lineno)d\t%(message)s'
rotation_logging_handler.setFormatter(logging.Formatter(format))
rotation_logging_handler.suffix = '%Y-%m-%d'
logger.addHandler(rotation_logging_handler)
用法:
logger.logging.info('Service started at port %s', config.get_param('port'))
while True:
time.sleep(21)
logger.logging.info('Now time is {}'.format(time.time()))
我预计来自logs/log 的每分钟新消息都必须附加到当前日期的现有日志文件中。相反,来自logs/log 的每分钟消息都会覆盖当前日期的现有日志文件。
我应该怎么做才能达到这种行为?
PS:经过小小的研究,我发现TimedRotatingFileHandler 在doRollover 方法中删除了现有的日志文件并创建了新文件。所以第一个解决方案是创建从TimedRotatingFileHandler 派生的新处理程序
它会创建新文件(例如带有一些索引),用于删除现有的日志文件。
【问题讨论】: