У меня есть вопрос, касающийся модуля логирования в Python. Если я создаю экземпляр логгера и устанавливаю его уровень на INFO без добавления каких-либо обработчиков, то я ожидаю, что информационные сообщения будут напечатаны на экране. Однако в действительности предупреждающие сообщения печатаются, а информационные сообщения - нет. После явного добавления обработчика печатаются оба уровня.
Точно, следующий небольшой скрипт:
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.info("This is an info message")
logger.warning("This is a warning message")
print("*** Add a stream handler explicitly")
handler = logging.StreamHandler()
logger.addHandler(handler)
logger.info("This is an info message")
logger.warning("This is a warning message")
дает вывод
This is a warning message
*** Add a stream handler explicitly
This is an info message
This is a warning message
(проверено в Python 3.7.6 и 3.8.2).
Я ожидаю, что либо сообщения не будут напечатаны без обработчика, либо оба уровня будут напечатаны после установки уровня в INFO.