В документации по logging есть этот пример:
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)