Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
788

Вывод всех сообщений логгера Python в stdout и log файл

Часто при работе с логгированием в Python возникает задача вывода всех сообщений, генерируемых логгером, одновременно в stdout и файл лога. Это может быть

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

К примеру, в коде есть следующие строки:

logger.critical("Что-то пошло не так")
print("Что-то пошло не так")

Здесь мы видим дублирование сообщений, что является избыточным и может затруднить поддержку кода.

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

Основной компонент в модуле logging, который используется для вывода сообщений, называется Handler. Существуют разные типы обработчиков, которые можно использовать для вывода сообщений в различные места: файлы, stdout, сеть и т.д.

Для вывода сообщений в stdout и файл лога одновременно, можно настроить два обработчика: StreamHandler и FileHandler. StreamHandler выводит сообщения в stdout (или любой другой поток), а FileHandler — в файл.

import logging

logger = logging.getLogger(__name__)

stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler('logfile.log')

logger.addHandler(stream_handler)
logger.addHandler(file_handler)

Теперь при вызове logger.critical("Что-то пошло не так"), сообщение будет выведено в stdout и записано в файл logfile.log.

Таким образом, с помощью модуля logging можно настроить вывод всех сообщений логгера в stdout и log файл, избегая дублирования сообщений.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

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