for i in range(self.backupCount - 1, 0, -1):
sfn = self.rotation_filename("%s.%d" % (self.baseFilename, i))
dfn = self.rotation_filename("%s.%d" % (self.baseFilename,
i + 1))
if os.path.exists(sfn):
if os.path.exists(dfn):
os.remove(dfn)
os.rename(sfn, dfn)
dfn = self.rotation_filename(self.baseFilename + ".1")
if os.path.exists(dfn):
os.remove(dfn)
self.rotate(self.baseFilename, dfn) # 重命名文件
if not self.delay:
self.stream = self._open() # 假设shouldRollover延迟,可以翻开新的流
def shouldRollover(self, record): # 判别能否需求滚动
if self.stream is None: # 立刻翻开流
self.stream = self._open()
if self.maxBytes > 0:
msg = "%s\n" % self.format(record)
self.stream.seek(0, 2) #due to non-posix-compliant Windows feature
if self.stream.tell() + len(msg) >= self.maxBytes: # 判别大小
return 1
return 0
文件大小滚动就是在记载日志时分判别文档能否超过下限,超过则重命名旧日志,生成新日志。
按照日期滚动 TimedRotatingFileHandler按照日期滚动的处置器:
class TimedRotatingFileHandler(BaseRotatingHandler):
(责任编辑:admin)