Как зарегистрировать исключение python? [дубликат]


этот вопрос уже есть ответ здесь:

Как я могу зарегистрировать исключение в Python?

Я посмотрел на некоторые параметры и узнал, что я могу получить доступ к фактическим деталям исключения, используя этот код:

import sys
import traceback

try:
    1/0
except:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    traceback.print_exception(exc_type, exc_value, exc_traceback)

Я хотел бы как-то получить строку print_exception() бросает в stdout, так что я могу войти в него.

5   51  

5 ответов:

чтобы ответить на ваш вопрос, вы можете получить строковую версию print_exception() С помощью traceback.format_exception()

посмотри logging.exception (Модуль Ведения Журнала Python)

import logging 
def foo():
    try:
        some_code()
    except:
        logging.exception('')

Это должно автоматически позаботиться о получении обратной трассировки для текущего исключения и регистрации его должным образом.

исключения ведения журнала так же просто, как добавление аргумента ключевого слова exc_info=True к любому сообщению журнала, см. Запись для Logger.отладка в http://docs.python.org/2/library/logging.html.

пример:

try: 
    raise Exception('lala')
except Exception:
    logging.info('blah', exc_info=True)

вывод (в зависимости, конечно, от конфигурации обработчика журнала):

2012-11-29 10:18:12,778 - root - INFO - <ipython-input-27-5af852892344> : 3 - blah
Traceback (most recent call last):
  File "<ipython-input-27-5af852892344>", line 1, in <module>
    try: raise Exception('lala')
Exception: lala

в Python 3.5 вы можете передать экземпляр класса exception аргумент exc_info:

import logging
try:
    1/0
except Exception as e:
   logging.error('Error at %s', 'division', exc_info=e)

прежде всего, рассмотрите возможность использования правильного типа исключения в предложении except. Затем, назвав исключение, вы можете распечатать его:

try:
    1/0
except Exception as e:
    print e

в зависимости от вашей версии Python, вы должны использовать

except Exception, e