我注意到,当我使用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))
两个事件都被写入。这两个事件都使用相同的处理程序,但彼此之间的发生确实非常接近。这与旋转写入日志和文件处理程序的方式有关吗?
编写多个事件以使用旋转处理程序进行记录时,我需要做些其他事情吗?
答案 0 :(得分:0)
如果您将backupCount
设置为非零,那么如果cjson.log.1
超过cjson.log.2
,则会创建cjson.log
和maxBytes
。我怀疑您的日志消息已超出,并且另一条消息存储在.1
或.2
文件中。
但是,有关格式的更多信息,extra
格是什么样的,以及如何与extra
进行交易才能确保。