Skip to content

JSON attributes do not show up as valid json in event attributes #2103

Open
@MagneticNeedle

Description

@MagneticNeedle

Describe the bug
A clear and concise description of what the bug is.
When a valid json is passed as value of a custom event atrribute, In logs it is show as a string and not a json object

To Reproduce

# in the handler

    def emit(self, record):
        env = os.getenv("APP_ENV", "local")
        log_ctx: LogCtxDict = record.__dict__.get("log_ctx", {})
        tags_dict = log_ctx.pop('tags', {})
        tags = [f"{k}:{v}" for k, v in tags_dict.items()]
        tags.append("env:{}".format(env))
        tags_merged = ",".join(tags)
        body = HTTPLog(
            [
                HTTPLogItem(
                    ddsource="python",
                    ddtags=tags_merged,
                    hostname="vv-anyscale-ray-aps1",
                    message=self.format(record),
                    service="vv-ap-thumbnails-v1-{}-service".format(env),
                    timestamp=str(datetime.fromtimestamp(record.created).astimezone().timestamp()),
                    level=record.levelname.lower(),
                    **record.__dict__.get("log_ctx", {})
                )
            ]
        )
        try:
            with ApiClient(self.dd_configuration) as api_client:
                resp = LogsApi(api_client).submit_log(content_encoding=ContentEncoding.GZIP, body=body)
                if "errors" in resp:
                    self.handleError(record)

        except (Exception, ):
            self.handleError(record)




logger.debug(
    "Test debug log",
    log_ctx={
        "x_request_body": json.dumps({"clip_id": "66abc57369bbe0000782ef42"}),
    }
)

Expected behavior
A clear and concise description of what you expected to happen.
The object should be consumed and shown as json,

Screenshots
If applicable, add screenshots to help explain your problem.
image

Environment and Versions (please complete the following information):
A clear and precise description of your setup:

$ poetry show datadog-api-client
 name         : datadog-api-client                         
 version      : 2.27.0                                     
 description  : Collection of all Datadog Public endpoints 

dependencies
 - certifi *
 - python-dateutil *
 - typing-extensions >=4.0.0
 - urllib3 >=1.15

for logs parsing default python pipleline is used
image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions