Python Glossary English

все Python 3loggingпонятие

logging.StreamHandler

обработчики

Обработчик, выводящий логи в поток: по умолчанию в sys.stderr. Чаще всего используется для вывода в консоль.

Синтаксис

handler = logging.StreamHandler(stream=None)  # None → sys.stderr

Сам по себе обработчик ничего не выводит — его нужно прицепить к логгеру через logger.addHandler(). Частая накладка: корневой логгер уже настроен basicConfig(), и добавленный вручную StreamHandler печатает каждое сообщение дважды — один раз своим обработчиком, второй раз через propagate у корневого (лечится logger.propagate = False или отказом от лишнего обработчика). Уровень обработчика — второй фильтр после уровня логгера: запись, отсечённая на logger.setLevel(), до handler.setLevel() просто не дойдёт.

Примеры

import logging, sys
logger = logging.getLogger('app')
sh = logging.StreamHandler(sys.stdout)
sh.setLevel(logging.INFO)
sh.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
logger.addHandler(sh)
logger.info('Вывод в stdout')

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности