为什么它在stackdriver上显示两次相同的日志(一次作为信息,一次作为具有相同消息的错误)?



我正在使用python准备一些日志记录,但是每当我运行代码时,它都会生成日志,但在堆栈驱动程序控制台上显示两次(一次作为信息,一次作为错误(。任何人都知道如何处理这个问题。

我的代码:

import logging
from google.cloud import logging as gcp_logging

log_client = gcp_logging.Client()
log_client.setup_logging()
# here executing some bigquery operations
logging.info("Query result loaded into temporary table: {}".format(temporary_table))
# here executing some bigquery operations
logging.error("Query executed with empty result set.")

当我运行上面的代码时,它会在堆栈驱动程序上显示两次上面的日志。

信息:2019-10-17T11:54:02.504Z cf-mycloudfunctionname 查询结果加载到临时表中:mytable

错误:2019-10-17T11:54:02.505Z cf-mycloud函数名称 查询结果加载到临时表中:mytable

我可以看到的是,两个(错误和信息(都被识别为平面文本,所以它发送的消息与stderr和stdout的信息相同,这就是为什么你会收到两条相同的消息。

您需要做的是将这两个日志更正为结构化 JSON 的短语,以便 stackdriver 将其识别为一个实体,并显示正确的有效负载。

此外,您可以将堆栈驱动程序代理配置为根据需要发送日志,请查看此文档。

此外,这将取决于您尝试检索此日志的位置 GCE, GKE, BQ.在某些情况下,最好直接更改 fluentd 的结构,而不是堆栈驱动程序代理。

最新更新