我有一个 GUI python 程序和一个简单的错误记录系统
import sys
sys.stderr = open("err.log", "w")
它工作得很好。我遇到的一个问题是,每当我在使用 Windows 7 和 Python 2.7.3 时遇到运行时错误时,只有在我关闭程序后才会写入文件 err.log。阅读我收集的相关问题,我需要在错误发生后对 sys.stderr 执行 flush() 和 os.fsync() ,但我不知道如何轻松做到这一点。
一种方法可能是在程序中可能出现运行时错误的每个可能点之后执行刷新/fsync,但这显然不是一个好的解决方案。使用此错误日志的主要原因是调试,因此根据定义,除了可能出现运行时错误的所有可能位置之外,我无法真正事先知道我需要刷新的位置。由于有很多这样的地方,我宁愿不必尝试/抓住每个地方。
我正在使用 PyGTK,所以我看不到主循环,我可以在其中执行刷新/fsync。
有没有办法告诉 Python 在出错后始终执行刷新和 fsync,或者有没有人有其他想法如何解决这个(小)问题?