在python中翻转TimedRotatingFileHandler没有发生

时间:2017-07-28 10:36:32

标签: python python-2.7 logging log-rotation

我有一个每天运行的脚本,并且正在使用Python的TimedRoatingLogFileHandler。 以下是代码的摘录。

log = 'test.log'           # Set up Log title
filename = '/var/log/' + log
handler = TimedRotatingFileHandler(filename, when="D", interval=1, backupCount=45)
formatter = logging.Formatter('%(asctime)s : %(name)s : %(levelname)s : %(message)s',
                              datefmt='%a, %d-%b-%Y %H:%M:%S')
handler.setFormatter(formatter)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(handler)

logger.info("Script execution started")

我期待每天创建一个新的日志文件test.log,之前的日志将被移动到test.log.1和test.log.2等。

我的假设是否正确? 如果是这样,为什么不发生? 我可以在今天的日志中看到昨天的输出。昨天的日志文件没有像我期望的那样移动到不同的文件。 我在SUSE linux机器上使用Python 2.7。 我检查了其他线程,但大多数都不包含任何答案。 如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您需要实际记录要进行翻转的内容。在你的程序执行此操作之前,昨天的输出仍然可以在当前日志中。

更新: TimedRotatingFileHandler适用于脚本运行多天,同时记录多天的情况。如果脚本在一天结束前每天完成,那么最好使用FileHandler,其中包含从日期派生的文件名。