在Python中,如何将异常记录到文件中?

3 投票
2 回答
3448 浏览
提问于 2025-04-16 10:50

假设我捕获了一个异常(也就是程序出错了),我想把这个错误记录下来。我该怎么做呢?我应该在哪里指定把它记录到哪里呢?

2 个回答

0

你可以使用traceback这个类。

用法是这样的:traceback.print_exc(file=open("errlog.txt","a"))

这里有一个例子(来自这里):

#!/usr/bin/env python
import sys, traceback

def main():
    l=[1,2,3,4]
    print l[4]

if __name__=="__main__":
    try:
        main()
    except:
        print "Trigger Exception, traceback info forward to log file."
        traceback.print_exc(file=open("errlog.txt","a"))
        sys.exit(1)

或者,如果你想在Django中记录异常,可以看看这个讨论。

如何在Django网站上记录服务器错误

4
virhilo tmp $ cat l.py 
import logging

logging.basicConfig(filename='exceptions.log', level=logging.DEBUG)

try:
    1/0
except ZeroDivisionError as e:
    logging.debug(e)
virhilo tmp $ python2 l.py 
virhilo tmp $ cat exceptions.log 
DEBUG:root:integer division or modulo by zero
virhilo tmp $ 

你可以用 traceback.print_exc() 来代替 e,这样可以得到更详细的错误报告。

撰写回答