Как разобрать записи журнала аудита из Stackdriver на GCP
Я пытаюсь получить журналы аудита BigQuery с помощью клиентских библиотек Stackdriver Logging в Python.
Согласно учебному пособию следующий код должен быть в состоянии извлечь записи журнала:
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 ответ
Поля ProtobufEntry
перечислены здесь. Если полезная нагрузка None
использование payload_pb
вместо этого, как я нашел в коде.
Следующий фрагмент работал на меня:
from google.cloud import logging
client = logging.Client()
for entry in client.list_entries():
timestamp = entry.timestamp.isoformat()
print('* {}: {}'.format
(timestamp, entry.payload_pb))