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