为什么Python RotatingFileHandler文件模式'a'不旋转

时间:2019-06-26 17:52:10

标签: python-3.x log-rotation

我正在实现日志旋转到旋转,最大字节数为16384,backupCount为5。为什么旋转不会在'a'模式下发生,而是在'a +'模式下起作用。

我正在使用的基本python代码最终将写入超过16K的数据。

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

如果将行args=('./logs/test.log', 'a', 16384, 5)更改为args=('./logs/test.log', 'a+', 16384, 5),则会看到轮换,并按设计创建了新文件。

这已在Linux和Windows系统上进行了尝试,结果是'a +'模式有效,这与文档https://docs.python.org/3/library/logging.handlers.html#rotatingfilehandler相反,表明'a'模式应该有效。

0 个答案:

没有答案