Python 错误日志记录
我想找到一种方法,把每个让Python解释器崩溃的错误记录下来,既保存到文件里,又能在屏幕上显示。这样做的原因是我想统计我在写代码时常犯的错误类型,目的是为了找到避免这些常见错误的方法。
我尝试通过使用subprocess模块为Python解释器写一个包装器来实现这个目标。简单来说,它会运行Python解释器,捕捉任何输出,解析并保存到文件中,同时在屏幕上打印输出,并用matplotlib制作一些总结图表。不过,我在实时获取我的包装脚本输出时遇到了问题。例如,如果我运行的脚本是:
import os
import time
for x in range(10):
print "testing"
time.sleep(10)
而我使用subprocess.Popen()和p.communicate(),那么这个包装器会等100秒,然后才会打印出所有输出。我希望这个包装器尽量不被注意——理想情况下,它应该每十秒打印一次“testing”。
如果有人能给我指个好办法,我会非常感激。
谢谢!
1 个回答
6
我认为你可以简单地用自己的函数替换掉 sys.excepthook
。你可以在 Python文档中了解更多信息。
简单来说,这个功能让你可以自定义当程序出现错误并且导致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
你可能还想看看 traceback模块,这个模块可以帮助你格式化错误信息。