В протоколировании документации есть следующий пример:
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)