logging.handlers.MemoryHandler 的 Capacity 参数

Capacity argument for logging.handlers.MemoryHandler

提问人:Marius 提问时间:5/10/2016 更新时间:5/10/2016 访问量:917

问:

我一直在使用 Python 的日志记录模块,与 配对,以便日志消息进入时间关键代码,然后刷新到稍后的代码。我的设置代码是:MemoryHandlerFileHandlerMemoryHandlerFileHandler

logger = logging.getLogger('timing_log')
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(message)s')
file_handler = logging.FileHandler('my_log.txt')
file_handler.setFormatter(formatter)
memory_loghandler = logging.handlers.MemoryHandler(
    capacity=10 * 1024,
    flushLevel=logging.ERROR,
    target=file_logger
)
memory_loghandler.setFormatter(formatter)
logger.addHandler(memory_loghandler)

在代码的关键部分,我记录:

logger.info('my logging message')

然而,我对这个论点有点不确定。这是否指定了以字节为单位的大小,所以我的当前值给出了 10KB 的容量?此外,如果缓冲区达到其容量,它应该刷新并继续,对吗?capacity10 * 1024

评论


答:

1赞 Lei Shi 5/10/2016 #1

根据 MemoryHandler 及其基本 BufferingHandler 的实现:

  • capacity指定在刷新之前保留在缓冲区中的日志记录的计数
  • 是的,当缓冲区达到其容量时,它只是刷新并继续(请参阅 BufferingHandler.emit)

评论

0赞 Marius 5/10/2016
谢谢,我以为容量会以字节或位为单位指定大小,但看起来你是对的,它是记录数。