【发布时间】:2020-11-25 21:29:36
【问题描述】:
我将从我的数据管道生成的日志发送到 GCP 上的 Stackdriver。但由于某种原因,它发送了相同事件日志的多个副本。在我的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)
但是没有用。
【问题讨论】:
标签: python logging google-cloud-platform stackdriver google-cloud-logging