我注意到,当我使用 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))
两个事件均已写入。这两个事件都使用相同的处理程序,但发生的时间非常接近。这与旋转写入日志与文件处理程序的方式有关吗?
在使用旋转处理程序编写多个事件来记录时,我需要做一些不同的事情吗?
最佳答案
如果将 backupCount
设置为非零,则将创建 cjson.log.1
和 cjson.log.2
如果 cjson.log
超过 maxBytes
。我怀疑您的日志消息超出范围,并且另一条消息存储在 .1
或 .2
文件中。
但是,需要确定有关您的格式、您的 extra
字典的外观以及您如何处理 extra
的更多信息。
关于Python RotatingFileHandler 未写入 FileHandler 写入的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55768645/