我正在构建一个工具来下载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'"
答案 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())