Во время from google.cloud import pubsub_v1
библиотека Google добавляет StreamHandler
к корневому логгеру.
Это означает, что в моем собственном логгере каждая строка появляется дважды.
Установка handlers=[]
для корневого регистратора решает эту проблему, но затем различные библиотеки, включая библиотеки Google, вообще не регистрируются, и я действительно хочу их журналы.
Вот минимальный пример кода:
import logging
import logging.config
import logging.handlers
import sys
def __configure() -> logging.Logger:
root_logger = logging.getLogger()
root_logger.setLevel(logging.WARNING)
logger1 = logging.getLogger("the_logger")
logger1.addHandler(__info_handler())
logger1.setLevel(logging.DEBUG)
return logger1
def __info_handler():
info_handler = logging.StreamHandler(sys.stdout)
info_handler.setLevel(logging.INFO)
info_handler.setFormatter(logging.Formatter("%(asctime)s;%(levelname)s;%(message)s", "%Y-%m-%d %H:%M:%S"))
return info_handler
the_logger= __configure()
the_logger.info("Hello World 1")
from google.cloud import pubsub_v1
the_logger.info("Hello World 2 ")
Вот что он печатает. Обратите внимание на дублирование.
2018-11-21 15:02:26;INFO;Hello World 1
INFO:the_logger:Hello World 2
2018-11-21 15:02:27;INFO;Hello World 2