繁体   English   中英

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

[英]How to change TimedRotatingFileHandler to mode 'w' in logging.conf file

我有一个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'}

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

mode不是TimeRotatingFileHandler的有效参数:

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

因此,它默认将日志附加到现有日志文件。 您可以使用RotatingFileHandler并在args中将mode设置为w

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

此时,filemode'a '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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM