Для логирования исключений:
try...except для перехвата исключений.except, используйте модуль logging для записи информации об исключении.logging.exception() автоматически включает информацию об исключении (traceback).
import logging
try:
    # Код, который может вызвать исключение
    result = 10 / 0
except Exception as e:
    logging.exception("Произошла ошибка!")
    # Или:
    # logging.error(f"Произошла ошибка: {e}", exc_info=True)
Логирование исключений — важная часть разработки надежных и отлаживаемых приложений. Вместо простого вывода трассировки (traceback) в консоль, запись информации об исключении в лог-файл позволяет получить более структурированную и постоянную информацию, полезную для диагностики проблем.
    Общий подход:
    В блоке try...except, после перехвата исключения, используйте модуль logging для записи информации об исключении.
  
Пример кода:
    
import logging
# Настройка логирования (например, запись в файл)
logging.basicConfig(filename='app.log', level=logging.ERROR, 
                    format='%(asctime)s - %(levelname)s - %(message)s')
def my_function(x):
    try:
        result = 10 / x
        return result
    except ZeroDivisionError as e:
        logging.error(f"Ошибка деления на ноль: {e}", exc_info=True)
        return None # Или другое подходящее значение по умолчанию
    except TypeError as e:
        logging.error(f"Неверный тип данных: {e}", exc_info=True)
        return None # Или другое подходящее значение по умолчанию
# Пример использования
value = 0
result = my_function(value)
if result is None:
    print("Произошла ошибка. Смотрите app.log для подробностей.")
else:
    print(f"Результат: {result}")
value = "hello"
result = my_function(value)
if result is None:
    print("Произошла ошибка. Смотрите app.log для подробностей.")
else:
    print(f"Результат: {result}")
    
  
  Разъяснения:
logging.basicConfig(...):  Настраивает базовую конфигурацию логирования.  Определяет, куда будут записываться логи (в данном случае, в файл 'app.log'), уровень логирования (logging.ERROR - будут записываться только ошибки и более серьезные события), и формат записи.
    logging.error(f"Ошибка: {e}", exc_info=True):
      logging.error(...):  Записывает сообщение об ошибке в лог.  Используйте logging.warning, logging.info, logging.debug для записи сообщений с другим уровнем важности.
        f"Ошибка: {e}":  Форматирует сообщение об ошибке, включая информацию об исключении (e).
        exc_info=True:  Ключевой аргумент, который позволяет включить в лог полную трассировку стека (traceback) исключения.  Это крайне важно для понимания контекста возникновения ошибки и ее отладки.
        ZeroDivisionError, TypeError) для более точной диагностики проблем.
    None.  Это позволяет вызывающему коду определить, что произошла ошибка и обработать ее соответствующим образом.  Альтернативно, можно переподнять исключение (raise) после логирования, если необходимо, чтобы вызывающая функция также знала об ошибке.
    Преимущества логирования исключений:
exc_info=True) предоставляет полную информацию о том, как произошло исключение, что критически важно для отладки.
    Дополнительные советы:
DEBUG, INFO, WARNING, ERROR, CRITICAL) в зависимости от серьезности события.
    logging.handlers.RotatingFileHandler) для предотвращения заполнения диска.
    Логирование исключений – это не просто хорошая практика, это необходимый элемент разработки надежного и отлаживаемого программного обеспечения. Правильное использование логирования значительно упрощает диагностику проблем и повышает стабильность ваших Python-приложений.