07 Июл 2023
2 мин
89

Запись ошибок Python со служебной информацией

Часто при отладке программ на Python возникает необходимость записи исключений в журналы. Стандартный модуль logging позволяет это сделать, однако, иногда

Содержание

Часто при отладке программ на Python возникает необходимость записи исключений в журналы. Стандартный модуль logging позволяет это сделать, однако, иногда просто сообщения об ошибке недостаточно. Возникает необходимость увидеть более подробную информацию — например, информацию о месте возникновения ошибки или содержимое стека на момент исключения.

Для иллюстрации рассмотрим следующий пример:

import logging
try:
    1 / 0
except ZeroDivisionError as e:
    logging.error(e)  # ERROR:root:division by zero

В этом коде происходит деление на ноль, что вызывает исключение ZeroDivisionError. Ошибка логируется, но в журнале остается только сообщение об ошибке — «division by zero». Как можно получить больше информации об ошибке?

Использование traceback

Для получения дополнительной информации об исключении в Python можно использовать модуль traceback. Он предоставляет несколько функций для работы с информацией об исключениях и стеком вызовов.

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

Ниже приведен пример использования этой функции для логирования исключений:

import logging
import traceback

try:
    1 / 0
except ZeroDivisionError:
    logging.error("Exception occurred", exc_info=True)

В этом коде, после возникновения исключения ZeroDivisionError, вызывается logging.error с аргументом exc_info=True. Это приводит к тому, что в журнал записывается не только сообщение об ошибке, но и полная информация об исключении, включая стек вызовов.

Такой подход позволяет получить гораздо больше информации об ошибках, что облегчает отладку и поиск причин возникновения исключений. Использование модуля logging вместе с модулем traceback делает логирование ошибок в Python удобным и эффективным инструментом для разработки.

Содержание

Добавить комментарий

Узнай профессию по рисунку