Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
196

Конфигурация логгера для записи в файл и вывода на стандартный вывод

Часто в процессе разработки программ на Python возникает потребность ведения логов. При этом может возникнуть необходимость одновременной записи логов

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

Модуль logging в Python предоставляет широкие возможности для настройки ведения логов. Для решения описанной проблемы можно использовать следующий код:

import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

handler1 = logging.StreamHandler()
handler2 = logging.FileHandler('logfile.log')

formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)

logger.addHandler(handler1)
logger.addHandler(handler2)

В этом коде создается два обработчика: StreamHandler для вывода логов на стандартный вывод и FileHandler для записи логов в файл. Оба обработчика используют один и тот же форматтер, который задает формат логов. Затем обработчики добавляются к логгеру.

Теперь, вызывая методы logger.debug(), logger.info(), logger.warning(), logger.error() и logger.critical(), можно выводить логи на стандартный вывод и записывать их в файл одновременно.

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

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

Подарок
Забрать подарок