Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python错误日志记录_Python_Error Logging - Fatal编程技术网

Python错误日志记录

Python错误日志记录,python,error-logging,Python,Error Logging,我想找到一种方法来记录每一个迫使python解释器退出并保存到文件以及打印到屏幕上的错误。我之所以想这样做,是因为我想保留我在编写代码时犯的错误类型的统计信息,以期找到避免我将来经常犯错误的方法 我一直试图通过使用子流程模块为python解释器编写包装来实现这一点。基本上,它运行python解释器,捕获任何输出,解析并将其保存到文件中,打印输出,并使用matplotlib生成一些摘要图。但是,从包装器脚本实时获取输出时遇到问题。例如,如果我正在运行的脚本是: import os import

我想找到一种方法来记录每一个迫使python解释器退出并保存到文件以及打印到屏幕上的错误。我之所以想这样做,是因为我想保留我在编写代码时犯的错误类型的统计信息,以期找到避免我将来经常犯错误的方法

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

import os  
import time

for x in range(10):  
    print "testing"  
    time.sleep(10)  
我将subprocess.Popen()与p.communicate()一起使用,包装器将等待100秒,然后打印所有输出。我希望包装器尽可能不可见——在这种情况下,理想情况是每10秒打印一次“测试”

如果有人能为我指出一个好的方法,我将不胜感激


谢谢

我相信您可以简单地用自己的函数替换
sys.excepthook
。你可以在报纸上看到

基本上,它允许您自定义异常渗透到迫使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
您可能还需要查看,以格式化您得到的回溯