В Python, как лучше всего регистрировать исключения в файл? - PullRequest
3 голосов
/ 29 января 2011

Предположим, я поймаю исключение и хочу его зарегистрировать. Как я могу это сделать? Где я могу указать, куда регистрировать это?

Ответы [ 2 ]

4 голосов
/ 29 января 2011
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 $ 

вместо od e вы можете использовать traceback.print_exc(), чтобы получить более подробный отчет

0 голосов
/ 29 января 2011

Вы можете использовать класс 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

...