Skip to content

Instantly share code, notes, and snippets.

@dhermes
Created March 31, 2017 20:57
Show Gist options
  • Save dhermes/b147eebe41c28976fe0dd2d68694a7d2 to your computer and use it in GitHub Desktop.
Save dhermes/b147eebe41c28976fe0dd2d68694a7d2 to your computer and use it in GitHub Desktop.
import json
from google.cloud.proto.logging.v2.log_entry_pb2 import LogEntry
from google.protobuf.json_format import MessageToJson
from google.protobuf.json_format import ParseDict
from google.protobuf.struct_pb2 import ListValue
from google.protobuf.struct_pb2 import Struct
from google.protobuf.struct_pb2 import Value
def main():
line = Struct(fields={
'time': Value(string_value='2016-09-04T13:00:08.139759Z'),
'severity': Value(string_value='INFO'),
'logMessage': Value(string_value='Simply testing'),
})
lines = ListValue()
lines.values.add(struct_value=line)
pb_fields = {
'@type': Value(string_value='type.googleapis.com/google.appengine.logging.v1.RequestLog'),
'startTime':Value(string_value='2016-09-04T13:00:08.117102Z'),
'endTime':Value(string_value='2016-09-04T13:00:08.117102Z'),
'latency':Value(string_value='0s'),
'responseSize':Value(string_value='349'),
'userAgent': Value(string_value='agent'),
'resource': Value(string_value='test resource'),
'line': Value(list_value=lines),
}
labels = {
'serviceName': 'custom.googleapis.com',
'custom.googleapis.com/primary_key': 'fake_module',
'custom.googleapis.com/secondary_key': 'fake_version',
'zone': 'us6',
}
message_pb = Struct(fields=pb_fields)
resource = {
'logName': 'projects/banana-elephant/logs/test',
'resource': {'type': 'global'},
'protoPayload': json.loads(MessageToJson(message_pb)),
'labels': labels,
}
entry_pb = LogEntry()
ParseDict(resource, entry_pb)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment