Как разобрать записи журнала аудита из 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))