Как мне зарегистрировать исключение на уровне предупреждения или информации с помощью traceback, используя каркас python logging? - PullRequest
45 голосов
/ 10 октября 2008

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

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

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

Ответы [ 7 ]

64 голосов
/ 11 октября 2008

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

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

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

Так же:

logger.warning("something raised an exception:", exc_info=True)
4 голосов
/ 05 февраля 2011

Вот тот, который работает (Python 2.6.5).

logger.critical("caught exception, traceback =", exc_info=True)
2 голосов
/ 23 апреля 2018

Вы можете попробовать это:

from logging import getLogger

logger = getLogger('warn')

try:
    # Somethings that is wrong.

except Exception as exp:
    logger.warn("something raised an exception: " , exc_info=True)
    logger.warn("something raised an exception: {}".format(exp))  # another way
0 голосов
/ 14 сентября 2015

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

# 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)
0 голосов
/ 11 октября 2008

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

0 голосов
/ 10 октября 2008

Использование Logger.exception().

try:
   #Something...
except BaseException, excep:
   logger = logging.getLogger("component")
   logger.exception("something raised an exception")
0 голосов
/ 10 октября 2008

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

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

...