在Python中,将异常记录到文件的最佳方法是什么?

时间:2011-01-29 10:40:36

标签: python django exception logging

假设我捕获异常,我想记录它。我怎么做?我在哪里指定将其记录到哪里?

2 个答案:

答案 0 :(得分: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 $ 

而不是e您可以使用traceback.print_exc()来获取更详细的报告

答案 1 :(得分:0)

您可以使用追溯类。

像这样:traceback.print_exc(file = open(“errlog.txt”,“a”))

以下是一个示例(来自here):

#!/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中记录异常,请查看此主题。

How do you log server errors on django sites