Interesting. Dustin Ingram (Google DevRel) copied this question to 
StackOverflow 
<https://stackoverflow.com/questions/58753378/how-to-deserialize-app-engine-application-logs-from-stackdriver-logging-api>,
 
and answered it there, but not here. Is that standard for this group?

In any case, thanks Dustin! Except your answer 
<https://stackoverflow.com/a/58753379/186123> to switch to the v1 
StackDriver Logging API and use LogEntry.to_api_repr() doesn't work for me. 
I get:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File 
"/Users/ryan/src/bridgy/local/lib/python2.7/site-packages/google/cloud/logging/entries.py"
, line 357, in to_api_repr
    info["protoPayload"] = MessageToDict(self.payload)
  File 
"/Users/ryan/src/bridgy/local/lib/python2.7/site-packages/google/protobuf/json_format.py"
, line 168, in MessageToDict
    return printer._MessageToJsonObject(message)
  File 
"/Users/ryan/src/bridgy/local/lib/python2.7/site-packages/google/protobuf/json_format.py"
, line 202, in _MessageToJsonObject
    return methodcaller(_WKTJSONMETHODS[full_name][0], message)(self)
  File 
"/Users/ryan/src/bridgy/local/lib/python2.7/site-packages/google/protobuf/json_format.py"
, line 314, in _AnyMessageToJsonObject
    sub_message = _CreateMessageFromTypeUrl(type_url, self.descriptor_pool)
  File 
"/Users/ryan/src/bridgy/local/lib/python2.7/site-packages/google/protobuf/json_format.py"
, line 389, in _CreateMessageFromTypeUrl
    'Can not find message descriptor by type_url: {0}.'.format(type_url))
TypeError: Can not find message descriptor by type_url: type.googleapis.com/
google.appengine.logging.v1.RequestLog.

Searching turns up a few GitHub issues showing that people maintaining 
Google Cloud Python libraries have struggled with this for years. I got 
lost in them and haven't yet managed to find a conclusion:

https://github.com/googleapis/google-cloud-python/issues/2572
https://github.com/googleapis/google-cloud-python/issues/2674
etc.

In case it helps, here are the relevant packages I have installed in my 
virtualenv:

google-api-core                        1.14.3
google-api-python-client               1.7.11
google-auth                            1.6.3
google-auth-httplib2                   0.0.3
google-cloud-core                      1.0.3
google-cloud-logging                   1.14.0
googleapis-common-protos               1.6.0
oauth2client                           4.1.3


On Thursday, November 7, 2019 at 7:34:42 AM UTC-8, Ryan B wrote:
>
> Hi again! As part of migrating to Python 3, I need to migrate from 
> logservice 
> <https://cloud.google.com/appengine/docs/standard/python/refdocs/google.appengine.api.logservice.logservice>
>  
> to the StackDriver Logging API 
> <https://cloud.google.com/logging/docs/reference/api-overview>. I have 
> google-cloud-logging <https://pypi.org/project/google-cloud-logging/> 
> installed, and I can successfully fetch GAE application logs with eg:
>
> >>> from google.cloud.logging_v2 import LoggingServiceV2Client
> >>> entries = LoggingServiceV2Client().list_log_entries((
> 'projects/brid-gy',),
>          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..."
> }
> ...
>
> This gets me a LogEntry with text application logs in the 
> proto_payload.value field. How do I deserialize that field? I've found 
> lots of related mentions in the docs - links below - but nothing pointing 
> me to a google.appengine.logging.v1.RequestLog protobuf generated class 
> anywhere that I can use, if that's even the right idea. Has anyone done 
> this?
>
>
> https://googleapis.dev/python/logging/latest/gapic/v2/types.html#google.cloud.logging_v2.types.LogEntry.proto_payload
>
> https://cloud.google.com/logging/docs/reference/v2/rpc/google.appengine.logging.v1#requestlog
>
> https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#FIELDS.proto_payload
> https://cloud.google.com/logging/docs/api/v2/resource-list#resource-indexes
> https://groups.google.com/d/topic/google-cloud-dev/Xr6tZxOIaJY/discussion
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/c28a02dc-b15a-4ff6-9771-023bae2b4e80%40googlegroups.com.

Reply via email to