Как изменить TimedRotatingFileHandler на режим «w» в файле logging.conf - PullRequest
1 голос
/ 04 июля 2019

У меня есть файл 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 ]

2 голосов
/ 04 июля 2019

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 голос
/ 04 июля 2019

В настоящее время файловый режим '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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...