用於記錄標準輸出,你可以使用一個標準輸出的包裝,像這樣的:
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