Python错误记录

问题描述:

我想找到一种方法来记录每一个强制python解释器退出以保存到文件以及打印到屏幕上的错误。我想这样做的原因是,我想保持统计我写代码时犯的错误类型,并着眼于找到避免我将来犯的错误的方法。Python错误记录

我一直在试图通过使用子进程模块编写python解释器的包装来做到这一点。基本上,它运行Python解释器,捕获任何输出,解析并将其保存到文件,打印输出,并使用matplotlib制作一些摘要数字。不过,我在实时从包装脚本获取输出时遇到了问题。例如,如果我运行的脚本是:

import os 
import time 

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

和我使用subprocess.Popen()与p.communicate(),包装将等待百秒,然后打印所有的输出。我希望包装尽可能隐蔽 - 理想情况下,它会每隔十秒打印一次“测试”。

如果有人能指出我这样做的好方法,我将不胜感激。

谢谢!

我相信你可以简单地用你自己的功能代替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,格式化你的回溯。