Почему режим Python RotatingFileHandler не вращается - PullRequest
0 голосов
/ 26 июня 2019

Я выполняю ротацию логов в ротацию с maxBytes 16384 и backupCount 5. Почему ротация не происходит в режиме 'a', а работает с 'a +'.

Базовый код Python IЯ использую в конечном итоге записи более 16 КБ данных.

import logging
import logging.config
import logging.handlers

logging.config.fileConfig(fname='logtest.conf', disable_existing_loggers=False)
logger = logging.getLogger(__name__)

###
logging.info("So did it all load")
logging.info("Looking to cause log to rotate.. so bunch of data follows")
for x in range(200):
    logging.info("*******************************************************************************************************************")

Вот файл logtest.conf, который не будет вызывать вращение.

[loggers]
keys=root

[handlers]
keys=consoleHandler, defaultLogFile

[formatters]
keys=mainFormatter, consoleFormater

[logger_root]
level=DEBUG
handlers=consoleHandler, defaultLogFile
qualname=root
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormater
args=(sys.stdout,)

[handler_defaultLogFile]
class=logging.handlers.RotatingFileHandler
args=('./logs/test.log', 'a', 16384, 5)
formatter=mainFormatter

[formatter_mainFormatter]
format=%(asctime)s %(levelname)s [%(name)s-func:%(funcName)s] - %(message)s

[formatter_consoleFormater]
format=%(levelname)s [%(name)s-func:%(funcName)s] - %(message)s

Если я изменю строку *От 1009 * до args=('./logs/test.log', 'a+', 16384, 5) Я увижу ротацию с созданием новых файлов в соответствии с назначением.

Это было опробовано в системах Linux и Windows с тем же результатом, когда работал режим «+», что противоречитдокументация https://docs.python.org/3/library/logging.handlers.html#rotatingfilehandler указывает на то, что режим 'a' должен работать.

...