Skip to content

StructuredLogHandler appends Traceback #382

@tombeck

Description

@tombeck

The StructuredLogHandler appends a Traceback after the json structured log message.
This causes a second unstructured log entry with just the traceback when the handler is used in a Google Cloud Function.

Code example

import logging from google.cloud.logging.handlers import StructuredLogHandler logger = logging.getLogger() logger.handlers.clear() logger.addHandler(StructuredLogHandler()) try: raise Exception("Test") except Exception: logger.exception("Failed")

Output

{"message": "Failed\nTraceback (most recent call last):\n File \"main.py\", line 10, in <module>\n raise Exception(\"Test\")\nException: Test", "severity": "ERROR", "logging.googleapis.com/labels": {}, "logging.googleapis.com/trace": "", "logging.googleapis.com/spanId": "", "logging.googleapis.com/sourceLocation": {"line": 12, "file": "main.py", "function": "<module>"}, "httpRequest": {} } Traceback (most recent call last): File "main.py", line 10, in <module> raise Exception("Test") Exception: Test 

The traceback appears twice. Once inside the structured log message and again after it. This happens because a logging.Formatter is used which always appends the traceback if exc_info or exc_text is present.

Metadata

Metadata

Assignees

Labels

api: loggingIssues related to the googleapis/python-logging API.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions