我一直在使用Python的日志记录模块中的MemoryHandler
,与FileHandler
配对,以便日志消息在时间关键代码中转到MemoryHandler
,然后之后会被刷新到FileHandler
。我的设置代码是:
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')
但是,我对capacity
参数有点不确定。这是否以字节为单位指定大小,因此我当前的10 * 1024
值为10KB容量?此外,如果缓冲区达到其容量,它应该只是刷新并继续,正确吗?
答案 0 :(得分:1)
根据MemoryHandler as well as its base BufferingHandler的实施情况:
capacity
指定在刷新之前保留在缓冲区中的日志记录计数