В протоколировании документации есть следующий пример:
import logging
# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
logger.addHandler(ch)
Почему я должен установить уровень logging.DEBUG дважды, для Logger и для StreamHandler?
Я понимаю, что ch.setLevel(logging.DEBUG) установит уровень отладки для обработчика потока. Но каков эффект установки уровня на регистратор? Где этот уровень отражается?
Я получаю тот же вывод консоли, если я изменю уровень, например, INFO либо на Logger, либо на StreamHandler.
То есть:
...........
logger.setLevel(logging.INFO)
............
ch.setLevel(logging.DEBUG)
дает тот же вывод в консоли, что
...........
logger.setLevel(logging.DEBUG)
............
ch.setLevel(logging.INFO)