如何从GCP上的Stackdriver解析审计日志条目

时间:2018-02-09 11:37:38

标签: python google-bigquery google-cloud-python google-cloud-stackdriver google-cloud-logging

我试图在Python中使用Stackdriver Logging Client Libraries检索BigQuery审核日志。

根据the tutorial,以下代码应该能够获取日志条目:

for entry in client.list_entries():
    do_something_with(entry)

但是,这个迭代器只返回ProtobufEntry,我无法找到如何从该对象获取实际的日志消息。

for entry in client.list_entries():
    print type(entry)

上面的代码产生以下输出:

$ python log_test.py
<class 'google.cloud.logging.entries.ProtobufEntry'>
<class 'google.cloud.logging.entries.ProtobufEntry'>
<class 'google.cloud.logging.entries.ProtobufEntry'>
....

但是,我无法找到解析这些对象的方法。

如何解析实际的日志消息?

1 个答案:

答案 0 :(得分:2)

列出了ProtobufEntry的字段here。如果有效负载为None,请使用payload_pb,而不是code中的from google.cloud import logging client = logging.Client() for entry in client.list_entries(): timestamp = entry.timestamp.isoformat() print('* {}: {}'.format (timestamp, entry.payload_pb))

以下代码段对我有用:

UPDATE 
it_system_additional INNER JOIN
(
    SELECT departmentName
    FROM it_system_additional
) departments ON departments.DepartmentName = it_system_additional.departmentName
SET it_system_additional.departmentid = departments.departmentId