Python 错误日志记录

3 投票
1 回答
6044 浏览
提问于 2025-04-16 11:30

我想找到一种方法,把每个让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模块,这个模块可以帮助你格式化错误信息。

撰写回答