все 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Сообщить о неточности