python 追踪except信息

来源:互联网 发布:番号搜索观看软件 编辑:程序博客网 时间:2024/05/29 19:50

       看下面这个函数

       

def test():    sum = 3/0    if __name__ == '__main__':    test()
       除0肯定是不对的,会引发一个except,内容如下:

       

File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 23, in <module>  test()File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 19, in test  sum = 3/0ZeroDivisionError: integer division or modulo by zero
       

       上面的提示,是在IDE中运行时出现的,实际在线上运行脚本时,一般会用nohup 方式启动,输出内容会写入到nohup.out文件中,但这个文件里的内容可能非常多,很杂乱,不利于异常的排查。

        python  提供了traceback  ,可以完美的输出except发生时的信息,就和上面的内容一样,而且可以输入到指定的文件之中,所以,不妨写一个装饰器,修饰那些需要监督的函数,当他们发生异常时,记录下有关异常的信息。

       

#coding=utf-8from functools import wrapsimport tracebackdef except_trace(filename):    def decorate(func):        @wraps(func)        def wrapper(*args,**kwargs):            try:                func(*args,**kwargs)            except:                fp = open(filename,'w')                traceback.print_exc(file=fp)                fp.close()        return wrapper    return decorate@except_trace('1.txt')def test():    sum = 3/0    if __name__ == '__main__':    test()

         这一次,发生异常后,有关异常的信息会输入到1.txt文件中,这个文件中只包含异常的信息,方便查看。

0 0
原创粉丝点击