Модуль 
logging в Python - это гибкая и мощная система для записи информации о событиях, происходящих в процессе выполнения программы.  Он предоставляет стандартизированный способ для разработчиков собирать, форматировать и обрабатывать сообщения, возникающие в их коде.  В отличие от простых операторов 
print, 
logging предлагает более продвинутые возможности, позволяющие контролировать, куда отправляются сообщения (например, в консоль, файл, базу данных), как они форматируются и какого уровня критичности они должны быть, чтобы быть записанными.
    
    
Основные компоненты модуля logging:
    
        - Logger: Основная точка входа в систему logging.  Logger содержит информацию о конфигурации и служит для создания записей. Логгеры организуются в иерархическую структуру, что позволяет управлять логированием на разных уровнях приложения.
- Handler: Определяет, куда отправлять записи логов.  Примеры обработчиков: StreamHandler(для отправки в консоль),FileHandler(для записи в файл),SMTPHandler(для отправки по электронной почте) и другие. Один логгер может использовать несколько обработчиков.
- Formatter: Определяет формат вывода записей логов.  Позволяет настраивать, какие данные будут включены в сообщение (например, время, уровень, имя логгера, текст сообщения) и как они будут отформатированы.
- Level:  Определяет уровень важности сообщения.  Предопределенные уровни: DEBUG,INFO,WARNING,ERROR,CRITICAL.  Каждому логгеру и обработчику можно задать свой уровень.  Сообщения с уровнем ниже заданного уровня не будут записаны.
- Filter:  Предоставляет возможность фильтровать сообщения на основе определенных критериев.  Фильтры могут быть применены к логгерам и обработчикам.
Преимущества использованияlogging:
    
        - Гибкость конфигурации:  Можно настроить, какие сообщения будут записываться, куда они будут отправляться и как они будут отформатированы.
- Уровни логирования:  Позволяют фильтровать сообщения по важности, что полезно для отладки и мониторинга.
- Удобство отладки:  Предоставляет полезную информацию для выявления и исправления ошибок.
- Возможность долгосрочного мониторинга:  Записи логов можно использовать для анализа производительности и выявления проблем в продакшене.
- Избежание замусоривания кода:  Отделяет логирование от основной логики приложения, делая код более чистым и читаемым.
Пример использования:
        
            import logging
            # Настройка логгера
            logging.basicConfig(level=logging.DEBUG,
                                format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            # Получение логгера
            logger = logging.getLogger(__name__)
            # Запись сообщений
            logger.debug('Отладочное сообщение')
            logger.info('Информационное сообщение')
            logger.warning('Предупреждение')
            logger.error('Ошибка')
            logger.critical('Критическая ошибка')
        
    
    В этом примере 
logging.basicConfig настраивает базовую конфигурацию, а затем logger используется для записи сообщений разных уровней. Формат вывода сообщений настраивается в 
format.  Более сложную конфигурацию можно задать с помощью конфигурационных файлов или программно.