Python RotatingFileHandler不在FileHandler所做的所有结果中写入

时间:2019-04-19 22:49:31

标签: python logging rotation handler

我注意到,当我使用RotatingFileHandler时,并不会写入发送到记录器的所有事件。

如果我改用FileHandler,一切都会写完。

如果我这样设置我的处理程序:

cjson_handler = RotatingFileHandler('{}/cjson.log'.format(log_directory), maxBytes=1024, backupCount=2)

仅以下代码中的第一个事件被写入日志文件。

    cjson_logger.info("system_info", extra={"CPU":cpu_details, "ROOT_USERS": users})
    core_list_small = core_list[:int(len(core_list) / 2)]
    cjson_logger.info("system_info", extra={"CPU": cpu_details_small, "ROOT_USERS": users})

如果我更改为:

cjson_handler = logging.FileHandler('{}/cjson.log'.format(log_directory))

两个事件都被写入。这两个事件都使用相同的处理程序,但彼此之间的发生确实非常接近。这与旋转写入日志和文件处理程序的方式有关吗?

编写多个事件以使用旋转处理程序进行记录时,我需要做些其他事情吗?

1 个答案:

答案 0 :(得分:0)

如果您将backupCount设置为非零,那么如果cjson.log.1超过cjson.log.2,则会创建cjson.logmaxBytes。我怀疑您的日志消息已超出,并且另一条消息存储在.1.2文件中。

但是,有关格式的更多信息,extra格是什么样的,以及如何与extra进行交易才能确保。