用于记录标准输出,你可以使用一个标准输出的包装,像这样的:
from __future__ import with_statement
class OutWrapper(object):
def __init__(self, realOutput, logFileName):
self._realOutput = realOutput
self._logFileName = logFileName
def _log(self, text):
with open(self._logFileName, 'a') as logFile:
logFile.write(text)
def write(self, text):
self._log(text)
self._realOutput.write(text)
然后你在你的主要的Python文件并进行初始化(运行一切的一个):
import sys
sys.stdout = OutWrapper(sys.stdout, r'c:\temp\log.txt')
至于日志记录异常,最简单的做法是将wx.App的MainLoop
方法包装在try..except中,然后提取异常信息并以某种方式保存,然后重新引发异常raise
,例如:
try:
app.MainLoop()
except:
exc_info = sys.exc_info()
saveExcInfo(exc_info) # this method you have to write yourself
raise
干杯Dzinx - 最后我用你的建议和monopocalypse的 – 2008-12-28 10:14:50
我试图以捕捉异常并显示友好的错误对话框,在我的应用程序这样的组合,但没有奏效。看起来,因为wxPython为App.MainLoop()产生了一个不同的线程,以至于异常超出了try/except块的范围。 – Soviut 2009-01-04 09:49:34