В рамках перехода на Python 3 мне нужно перейти с logservice в API ведения журналов StackDriver. У меня установлен google-cloud-logging, и я могу успешно получать журналы приложений GAE. например:
>>> from google.cloud.logging_v2 import LoggingServiceV2Client
>>> entries = LoggingServiceV2Client().list_log_entries(('projects/projectname',),
filter_='resource.type="gae_app" AND protoPayload.@type="type.googleapis.com/google.appengine.logging.v1.RequestLog"')
>>> print(next(iter(entries)))
proto_payload {
type_url: "type.googleapis.com/google.appengine.logging.v1.RequestLog"
value: "\n\ts~brid-gy\022\0018\032R5d..."
}
Это дает мне LogEntry
с текстовыми журналами приложений в поле proto_payload.value
. Как мне десериализовать это поле? Я нашел много связанных упоминаний в документах, но ничего не указывает мне на класс, сгенерированный google.appengine.logging.v1.RequestLog
protobuf, где бы я ни мог использовать, если это вообще правильная идея. Кто-нибудь сделал это?