Подтвердить что ты не робот

Как регистрировать исключение на предупреждающем или информационном уровне с помощью трассировки, используя фреймворк python?

Используя что-то вроде этого:

try:
   # Something...
except Exception as excep:
   logger = logging.getLogger("component")
   logger.warning("something raised an exception: " + excep)
   logger.info("something raised an exception: " + excep)

Я бы предпочел не иметь это на причине ошибки в моем специальном случае, это не ошибка.

4b9b3361

Ответ 1

Из документации регистрации:

В kwargs проверяются три аргумента ключевых слов: exc_info, stack_info и extra.

Если exc_info не оценивается как false, это приводит к добавлению информации об исключении в сообщение регистрации. Если используется кортеж исключений (в формате, возвращаемом sys.exc_info()) или экземпляр исключения, он используется; в противном случае вызывается sys.exc_info(), чтобы получить информацию об исключении.

Итак:

logger.warning("something raised an exception:", exc_info=True)

Ответ 2

Вот что работает (python 2.6.5).

logger.critical("caught exception, traceback =", exc_info=True)

Ответ 3

В некоторых случаях вы можете использовать библиотеку warnings. Вы можете иметь очень тонкий контроль над тем, как отображаются ваши предупреждения.

Ответ 4

Мне удалось отобразить сообщения журнала в блоке исключений со следующим фрагментом кода:

# basicConfig have to be the first statement
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("componet")
try:
    raise BaseException
except BaseException:
    logger.warning("something raised an exception: ",exc_info=True)
    logger.info("something raised an exception: " ,exc_info=True)

Ответ 5

Попробуйте использовать Logger.exception.

Logger.exception() создает журнал сообщение похожее на Logger.error(). разница заключается в том, что Logger.exception() сбрасывает трассировку стека вместе с ней. Вызовите этот метод только с обработчик исключений.

Ответ 6

Это довольно хорошо объяснено здесь.

Вы довольно близки. У вас есть возможность использовать значение по умолчанию с помощью

logging.warning("something raised an exception: " + excep)

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

Ответ 7

Используйте Logger.exception().

try:
   #Something...
except BaseException, excep:
   logger = logging.getLogger("component")
   logger.exception("something raised an exception")