我正在使用 Python3 向 Stackdriver 查询 GCP 日志。不幸的是,包含重要数据的日志条目以“NoneType”而不是“dict”或“str”的形式返回给我。结果“entry.payload”是“None”类型,“entry.payload_pb”有我想要的数据,但它是乱码。
有没有办法让 Stackdriver 以干净的格式返回这些数据,或者有什么方法可以解析它?如果没有,有没有办法我应该查询比我正在做的更好并产生干净数据的数据?
我的代码看起来像这样:
#!/usr/bin/python3
from google.cloud.logging import Client, ASCENDING, DESCENDING
from google.oauth2.service_account import Credentials
projectName = 'my_project'
myFilter = 'logName="projects/' + projectName + '/logs/compute.googleapis.com%2Factivity_log"'
client = Client(project = projectName)
entries = client.list_entries(order_by=DESCENDING, page_size = 500, filter_ = myFilter)
for entry in entries:
if isinstance(entry.payload, dict):
print(entry.payload)
if isinstance(entry.payload, str):
print(entry.payload)
if isinstance(entry.payload, None):
print(entry.payload_pb)
“entry.payload_pb”数据总是这样开始:
type_url: "type.googleapis.com/google.cloud.audit.AuditLog"
value: "\032;\n9gcp-user@my-project.iam.gserviceaccount.com"I\n\r129.105.16.28\0228