我正在使用一个基本的记录器来跟踪终端程序的运行情况,并且我发现有时日志会延迟几秒钟或几分钟,甚至是无缘无故地被完全跳过。
这是我的日志记录设置:
import logging
logging.basicConfig(
level=logging.WARNING,
format='%(asctime)s %(name)s %(levelname)s %(message)s'
)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
没什么好想的,这里是我使用记录器的代码示例,这里是按键事件之后,但是延迟发生在我决定处理事件之前:
if event.key == "c":
if self.mode != "clock":
logger.info("switching to clock mode")
self.mode = "clock"
self.gravitons = []
self.updateGravitonsKTree()
self.canShuffle = False
elif event.key == "f":
if self.mode != "free":
logger.info("switching to free mode")
self.mode = "free"
self.gravitons = []
self.updateGravitonsKTree()
(...)
我确定只有记录器的输出被延迟或跳过了,因为我可以看到程序的其余部分正常且立即做出反应,所以我猜可能有一种缓冲区可能没有正确刷新,但我什么也没看到日志记录模块的文档中对此进行了说明。
也在该程序中,我使用的是matplotlib动画,我怀疑这与该问题有关,但是我承认我对为什么以及如何出现这种情况并不清楚。
有人经历过同样的事情吗?有没有办法“修复”它?