根据the documentation进行日志轮换
当backupCount不为零时,系统将按以下方式保存旧的日志文件 将扩展名“ .1”,“。2”等附加到文件名。对于 例如,backupCount为5,基本文件名为app.log,您 将会获取app.log,app.log.1,app.log.2,直至app.log.5。
我想使用其他扩展名-而不是 log log.1 log.2 log.3 。我想轮换为 log,log.x,log.xx,log。 xxx 。我该如何实现?
答案 0 :(得分:3)
查看类RotatingFileHandler
,您会发现有一个方法doRollover
用于对日志文件进行翻转和命名:
def doRollover(self):
"""
Do a rollover, as described in __init__().
"""
if self.stream:
self.stream.close()
self.stream = None
if self.backupCount > 0:
for i in range(self.backupCount - 1, 0, -1):
# Those are the lines, which set the filenames
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()
您会看到,使用标准RotatingFileHandler
无法实现您想要的功能,因为除了基本文件名之外,没有其他选择会对文件命名产生任何影响。
您可以创建自己的处理程序,该处理程序继承自RotatingFileHandler
,并覆盖方法doRollover
,以涵盖您的命名方案。