Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Custom logs from a GCP Function do not contain execution-id #343

Copy link
Copy link
Closed
@amertkara

Description

@amertkara
Issue body actions

I am not sure if this is a bug or a misconfiguration issue but we are unable to get the execution-id in our logs. GCP's own function logs like startup/teardown/timeout contain it however our own logs don't. This makes it impossible to correlate all logs from an instance.

Example (GCP function startup log)

{
  insertId: "000000-a51b0cd9-1f4d-4396-b812-4b35c8878b69"
  labels: {
    execution_id: "j57c7yk340qq"
  }
  logName: "projects/PROJECT-ID/logs/cloudfunctions.googleapis.com%2Fcloud-functions"
  receiveTimestamp: "2021-06-30T17:37:16.202805413Z"
  resource: {
    labels: {
      function_name: "FUNCTION-NAME",
      project_id: "PROJECT-ID",
      region: "REGION"
    }
    type: "cloud_function"
  }
  severity: "DEBUG"
  textPayload: "Function execution started"
  timestamp: "2021-06-30T17:37:05.341077546Z"
}

We also tried setting a custom label in CloudLoggingHandler with a trace-id however GCP's own logs don't reflect the custom trace-id. This makes me think that GCP is using a separate logger which attaches the execution-id and our logs are isolated from that logger.

Environment details

  • OS type and version: N/A
  • Python version: 3.7.9
  • pip version: 21.1.2
  • google-cloud-logging version: 2.3.1

Steps to reproduce

  1. Create and attach CloudLoggingHandler to a logger in a GCP function
  2. Log an INFO message
  3. Verify the log does not contain execution-id inside labels

Code example

A simplified version of our logging setup and a basic event-trigger function.

import logging

import google.cloud.logging
from google.cloud.logging_v2.handlers.handlers import CloudLoggingHandler


class FunctionLogger(logging.Logger):

    def __init__(self, level=logging.NOTSET):
        super().__init__("logger_name", level)

        client = google.cloud.logging.Client()

        self._handler = CloudLoggingHandler(client)

        self.propagate = False  # prevent logging from root logger
        self.addHandler(self._handler)


def handler(event, context=None):
    """function entry point"""
    logger = FunctionLogger()

    logger.info("Test message")

Thanks!!

Metadata

Metadata

Assignees

Labels

api: loggingIssues related to the googleapis/python-logging API.Issues related to the googleapis/python-logging API.priority: p2Moderately-important priority. Fix may not be included in next release.Moderately-important priority. Fix may not be included in next release.type: questionRequest for information or clarification. Not an issue.Request for information or clarification. Not an issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.