Эти "INFO: ..." или "DEBUG: ..." появляются там, потому что какой-то обработчик определяет это.Мое предположение: обработчик по умолчанию все еще там.
Вы можете проверить это, заглянув в файл logger.handlers сразу после его создания.
logger = logging.getLogger()
logger.handlers = [] # This is the key thing for the question!
# Start defining and assigning your handlers here
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
Кроме того, вы можете просто переопределить формат для этого обработчика по умолчанию:
if (len(logger.handlers) > 0): # Check here whatever. Or try/except. You get the idea...
formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
logger.handlers[0].setFormatter(formatter)
Я не эксперт по Python, так что, возможно, есть лучший способ удалить или даже не создавать этот обработчик по умолчанию, но для меня это работает очень хорошо.
Примечание : какуказано в документации, .basicConfig полезен для простых регистраторов.Если у вас есть несколько потоков с несколькими форматами, это не работает, насколько я знаю, и вам нужно использовать пользовательские обработчики.