使用不同的扩展名轮换日志
Rotate logs using different extension
根据the documentation进行日志轮换
When backupCount is non-zero, the system will save old log files by
appending the extensions ‘.1’, ‘.2’ etc., to the filename. For
example, with a backupCount of 5 and a base file name of app.log, you
would get app.log, app.log.1, app.log.2, up to app.log.5.
我想使用不同的扩展名 - 而不是 log log.1 log.2 log.3 我想旋转到 log,log.x、log.x.x、log.x.x.x。我怎样才能做到这一点?
查看 Class 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
,以涵盖您的命名方案。
根据the documentation进行日志轮换
When backupCount is non-zero, the system will save old log files by appending the extensions ‘.1’, ‘.2’ etc., to the filename. For example, with a backupCount of 5 and a base file name of app.log, you would get app.log, app.log.1, app.log.2, up to app.log.5.
我想使用不同的扩展名 - 而不是 log log.1 log.2 log.3 我想旋转到 log,log.x、log.x.x、log.x.x.x。我怎样才能做到这一点?
查看 Class 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
,以涵盖您的命名方案。