Python错误记录

ano*_*ard 3 python error-logging

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

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

import os  
import time

for x in range(10):  
    print "testing"  
    time.sleep(10)  
Run Code Online (Sandbox Code Playgroud)

我正在使用带有p.communicate()的subprocess.Popen(),包装器将等待100秒,然后打印所有输出.我希望包装器尽可能不可见 - 理想情况下,它会在每十秒钟打印一次"测试".

如果有人能指出我这样做的好方法,我会非常感激.

谢谢!

Chr*_* B. 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
Run Code Online (Sandbox Code Playgroud)

您可能还想查看traceback模块,以格式化您获得的回溯.