Я выполняю ротацию логов в ротацию с 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' должен работать.