I need the jsonPayload in the logs of a Google Cloud Function instead of the textPayload. My aim is to use the keys of the dictionary as labels (see Log-based metrics labels) for Log-Based Metrics so that these can be addressed in Grafana.
I am using Python's logging module, but I can also switch to something else if needed.
I need as output in the logs:
jsonPayload: `{'key1':value1, 'key2':value2}` But I get a textPayload output instead, the whole next line is a string:
"2022-02-08 15:43:32,460 [INFO]: {"key1": value1, "key2": value2}" Real example from the logs, in the middle, you see the textPayload:
The picture as text:
{ insertId: "000000-1b431ffd-e42d-4f83-xyz" labels: {1} logName: "projects/MY_PROJECT/logs/cloudfunctions.googleapis.com%2Fcloud-functions" receiveTimestamp: "2022-02-08T15:43:41.808217166Z" resource: {2} textPayload: "2022-02-08 15:43:32,460 [INFO]: {"json_metadata": {"countrows": 736203, "countcolumns": 6, "size": 48261360, "gcs_stamp": "2022-02-08 15:43:32.451000+00:00", "python_stamp": "2022-02-08 15:43:31.055538"}}" timestamp: "2022-02-08T15:43:32.460Z" trace: "projects/MY_PROJECT/traces/dd97759176248586a3d3xyz" } First tries
Reading from https://cloud.google.com/logging/docs/structured-logging:
In Cloud Logging, structured logs refer to log entries that use the jsonPayload field to add structure to their payloads. Structured logging applies to user-written logs.
I tried to get this "structured logging" following Writing structured logs by
logging.info(json.dumps(json_for_gcp_lbm)) but to no avail.
Further in the links: there is a built-in Logging agent from GCP that uses fluentd as to About the Logging agent seems to be available only for Google Kubernetes Engine or the App Engine, not in a Google Cloud Function:
If you're using Google Kubernetes Engine or the App Engine flexible environment, you can write structured logs as JSON objects serialized on a single line to stdout or stderr. The Logging agent then sends the structured logs to Cloud Logging as the jsonPayload of the LogEntry structure.
How can I get the jsonPayload in this output?



logging.info(json.dumps(json_for_gcp_lbm))which is taken from the example of that link, but I only used the very last line of that example, hoping that this would already make it. I use aPython 3.9cloud function.