Если вы вызываете метод ensure_stackdriver_logging()
в другом месте или даже ранее добавляли обработчик журнала, это произойдет дважды (или чаще), потому что ваша проверка if не работает должным образом.
Когда вы выполняете проверку if lg_handler not in logger.handlers:
, выполняется сравнение между идентификатором объекта lg_handler
и другими объектами в списке, но поскольку вы только что создали lg_handler
в строке перед списком, это не будет в списке.
Возьмите это в качестве примера:
class Foo():
pass
l = [Foo()]
b = Foo()
print(b in l)
>>> False
b
отсутствует в списке, потому что тот объект, на который указывает b
, отсутствует в списке, но скорее объект Foo
, имеющий те же значения.