1

我正在使用客户端库。

for entry in logging_client.list_entries(order_by=DESCENDING, filter_=FILTER, page_size=1):

    timestamp = entry.timestamp.isoformat()
    print('****{}'.format(entry.payload_pb))
    print (entry.payload_pb)
    print('* {}: {}: {}'.format(timestamp, entry.logger.name, entry.insert_id))

但是payload_pb,只有两个属性:valuetype_url。否则我只能获取一些值,例如timestamp, logName, insertId.

我想获取' protopayload'中的值。请推荐一个方法!

4

4 回答 4

3

实际上,您可以dict通过将环境变量设置GOOGLE_CLOUD_DISABLE_GRPC为非空字符串(例如GOOGLE_CLOUD_DISABLE_GRPC=true.

这将填充payload而不是payload_pb.

于 2018-08-28T00:43:23.047 回答
1

尽管提供了提示,但我无法使其与 API 一起使用。

相反,您可以将日志导出到 BigQuery 之类的接收器,并从那里使用 SQL 进行查询。请参阅此处操作方法https://cloud.google.com/logging/docs/export/configure_export_v2

由于没有关于如何从 GCP 服务读取特定 protobuf 有效负载的代码(示例或示例),因此它可能尚未准备好迎接黄金时段或不打算以这种方式使用。AAMOF 唯一的文档是 - 截至今天 - 仅用于编写和阅读自定义日志。

如果您想跟进我提出的问题:https ://github.com/GoogleCloudPlatform/google-cloud-python/issues/5313

于 2018-05-15T12:49:31.817 回答
0

valueproto 有效负载是一个序列化的协议缓冲区消息。您需要对其进行反序列化以读取消息中的字段。

https://developers.google.com/protocol-buffers/docs/pythontutorial

proto 有效载荷是一条Any消息,值的类型由type_url

https://developers.google.com/protocol-buffers/docs/proto3#any

获得原始消息后,您可以使用json_format.MessageToJson将其转换为 JSON 。

只要知道原始消息的描述符,也可以Any直接处理消息。MessageToJson这可以通过“RegisterMessage”更新原始符号数据库来完成。

于 2018-04-27T17:59:28.890 回答
0

我找不到客户端库的任何方法。但是,我使用了 Python API

loglist = bq.entries().list(body=request_body).execute()

这里,bq是来自 discovery.buildloglist的响应,并以 JSON 格式提供响应,并带有 和 的dicts组合lists。我们必须深入挖掘它们,以获得确切的键值对。

我希望这只会帮助像我这样需要以某种方式完成工作的人!

于 2018-05-17T09:42:12.870 回答