Я отправляю журналы, созданные из моего конвейера данных, в Stackdriver на GCP. Но по какой-то причине он отправляет несколько дубликатов одних и тех же журналов событий. В моей функции ensure_stackdriver_logging
я проверяю, существует ли уже обработчик, чтобы предотвратить ситуацию, когда при повторном запуске task
обработчик не будет добавлен несколько раз. Кто-нибудь знает, в чем проблема?
def ensure_stackdriver_logging():
logger = get_logger()
lg_client = google.cloud.logging.Client()
lg_handler = CloudLoggingHandler(lg_client, 'thinknum_etl_logging')
if lg_handler not in logger.handlers:
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
lg_handler.setFormatter(formatter)
logger.setLevel(logging.INFO)
logger.addHandler(lg_handler)
def task():
ensure_stackdriver_logging()
...
Обновлять:
Я тоже пробовал это -
def ensure_stackdriver_logging():
logger = get_logger()
if hasattr(logger, 'initialized'):
return logger
else:
setattr(logger, 'initialized', True)
lg_client = google.cloud.logging.Client()
lg_handler = CloudLoggingHandler(lg_client, 'thinknum_etl_logging')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
lg_handler.setFormatter(formatter)
logger.setLevel(logging.INFO)
logger.addHandler(lg_handler)
Но это не сработало.