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

Accept JSON fields from "extra" argument #411

Copy link
Copy link
Closed
stewart-r/python-logging
#1
stewart-r/python-logging#1
@m-gentil

Description

@m-gentil
Issue body actions

Is your feature request related to a problem? Please describe.

When attaching the CloudLoggingHandler to a standard python logger, it is not possible to perform structured logging through the extra keyword argument for each logging call. Please refer to the standard logging python library for more documentation about the extra parameter. Take for instance the following snippet of code, written in Python 3.9 and using google-cloud-logging==2.6.0 as a dependency:

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

client = google.cloud.logging.Client()
handler = CloudLoggingHandler(client)

cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(handler)

cloud_logger.error('bad news', extra={"error_code": 300})  # Note that we include an extra dictionary

The extra dictionary is completely lost and does not appear in the received log from the Cloud Logging UI (see screenshot).

Describe the solution you'd like

All properties of a LogRecord that are considered as extras appear in the jsonPayload of the related entry in Cloud Logging. This can be implemented for instance in the body of the emit method of the CloudLoggingHandler (reference).

Describe alternatives you've considered

The only alternative solution we found is to use the log_struct method of the google.cloud.logging.logger.Logger() object directly. This is not a valid solution for us as we make heavy use of the standard logging library shipped with python: using a separate logger would introduce too much overhead for our existing and future projects, while killing the purpose of the centralized logging infrastructure that the python standard logging library provides.

Additional context
Screenshot 2021-10-04 at 17 46 36

Metadata

Metadata

Assignees

Labels

api: loggingIssues related to the googleapis/python-logging API.Issues related to the googleapis/python-logging API.priority: p3Desirable enhancement or fix. May not be included in next release.Desirable enhancement or fix. May not be included in next release.type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.‘Nice-to-have’ improvement, new feature or different behavior or design.

Type

No type

Projects

No projects

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.