2011-02-09 110 views
3

我想找到一種方法來記錄每一個強制python解釋器退出以保存到文件以及打印到屏幕上的錯誤。我想這樣做的原因是,我想保持統計我寫代碼時犯的錯誤類型,並着眼於找到避免我將來犯的錯誤的方法。Python錯誤記錄

我一直在試圖通過使用子進程模塊編寫python解釋器的包裝來做到這一點。基本上,它運行Python解釋器,捕獲任何輸出,解析並將其保存到文件,打印輸出,並使用matplotlib製作一些摘要數字。不過,我在實時從包裝腳本獲取輸出時遇到了問題。例如,如果我運行的腳本是:

import os 
import time 

for x in range(10): 
    print "testing" 
    time.sleep(10) 

和我使用subprocess.Popen()與p.communicate(),包裝將等待百秒,然後打印所有的輸出。我希望包裝儘可能隱蔽 - 理想情況下,它會每隔十秒打印一次「測試」。

如果有人能指出我這樣做的好方法,我將不勝感激。

謝謝!

回答

6

我相信你可以簡單地用你自己的功能代替sys.excepthook。你可以在Python documentation中閱讀。

基本上,它允許您自定義在異常滲透到強制Python解釋器退出時發生的情況。您可以使用這樣的:

import sys 

def my_excepthook(type, value, tb): 
    # you can log the exception to a file here 
    print 'In My Exception Handler' 

    # the following line does the default (prints it to err) 
    sys.__excepthook__(type, value, tb) 

sys.excepthook = my_excepthook 

你可能也想看看the traceback module,格式化你的回溯。