Как регистрировать исключение на предупреждающем или информационном уровне с помощью трассировки, используя фреймворк 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)
Я бы предпочел не иметь это на причине ошибки в моем специальном случае, это не ошибка.
Ответы
Ответ 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")