我有一个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'}
似乎不起作用(记录器仍在附加日志,而不是覆盖现有的日志文件)。
答案 0 :(得分:2)
mode
对TimeRotatingFileHandler
无效:
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