如何在logging.conf文件中将TimedRotatingFileHandler更改为模式“ w”

时间:2019-07-04 12:22:20

标签: python logging

我有一个logging.conf文件,内容如下:

[loggers]
keys=root

[logger_root]
level=INFO
handlers=file

[formatters]
keys=simple

[formatter_simple]
format=[%(levelname)s] %(asctime)s : %(name)s - %(message)s
datefmt=%H:%M:%s

[handlers]
keys=file

[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=simple
level=INFO
args=(log_directory,)

我希望每次运行代码时都删除较旧的日志,因此我想将mode设置为w,但是我不确定该怎么做。

[handler_file]
...
kwargs={'mode': 'w'}

似乎不起作用(记录器仍在附加日志,而不是覆盖现有的日志文件)。

2 个答案:

答案 0 :(得分:2)

modeTimeRotatingFileHandler无效:

class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)

,因此,默认情况下是将日志追加到现有日志文件中。您可以改用RotatingFileHandler,并在mode中将w设置为args

[handler_file]
class=handlers.RotatingFileHandler
...
args=(log_directory,'w')

答案 1 :(得分:1)

这时,文件模式'a'被硬编码为logging.handlers.TimedRotatingFileHandler

BaseRotatingHandler.__init__(self, filename, 'a', encoding=encoding,
                             delay=delay, errors=errors)

https://github.com/python/cpython/blob/master/Lib/logging/handlers.py#L207