如何在Python 3.x中查询GCP日志查看器并获取json结果(如读取gcloud日志记录)

时间:2019-08-05 06:51:02

标签: python-3.x google-cloud-platform gcloud stackdriver google-cloud-stackdriver

我正在构建一个工具来下载GCP日志,将日志作为单行json条目保存到磁盘,然后对这些日志进行处理。该程序既要支持导出到云存储的日志,又要支持当前堆栈驱动程序中的日志(以部分支持尚未预先配置向云存储导出的环境)。云存储部分已经完成,但是我很难从stackdriver下载日志。

我想实现与Python中的gcloud函数“ gcloud logging read”类似的功能。是的,我可以使用gcloud,但是我想将所有内容构建到一个工具中。

我目前有以下示例代码来打印匹配结果,但是我无法获得JSON格式的完整日志条目:

def downloadStackdriver():
    client = logging.Client()
    FILTER = "resource.type=project"
    for entry in client.list_entries(filter_=FILTER):
        a = (entry.payload.value)
        print(a)

如何使用gcloud logging read获得匹配日志的完整JSON输出?

基于其他stackoverflow页面,我尝试使用MessageToDict和MessageToJson,但是收到错误

  

"AttributeError: 'ProtobufEntry' object has no attribute 'DESCRIPTOR'"

1 个答案:

答案 0 :(得分:0)

您可以在to_api_repr包中的LogEntry类上使用google-cloud-logging函数:

from google.cloud import logging

client = logging.Client()
logger = client.logger('log_name')

for entry in logger.list_entries():
    print(entry.to_api_repr())