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,格式化你的回溯。