【发布时间】:2012-11-21 16:43:49
【问题描述】:
我有一个 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,或者有没有人有其他想法如何解决这个(小)问题?
【问题讨论】: