Skip to content

Bug: Logger custom formatters not receiving standard keys #1263

Closed
@heitorlessa

Description

@heitorlessa

Expected Behaviour

As per documentation, using a custom logging formatter should bring standard keys like service. Lambda context keys and custom keys are working just fine.

Example provided demonstrates that service key no longer appears in the first output.

Current Behaviour

When using a custom logging formatter, Powertools Logger standard keys are not being included.

This was identified when re-creating examples, outputs, and improving code snippets in #1262.

Code snippet

from aws_lambda_powertools import Logger
from aws_lambda_powertools.logging.formatter import LambdaPowertoolsFormatter


class CustomFormatter(LambdaPowertoolsFormatter):
    def serialize(self, log: dict) -> str:
        """Serialize final structured log dict to JSON str"""
        log["event"] = log.pop("message")  # rename message key to event
        return self.json_serializer(log)  # use configured json serializer


logger = Logger(service="payment", logger_formatter=CustomFormatter())
logger.info("hello")

logger_two = Logger(service="payment")
logger_two.info("hello")

Possible Solution

No response

Steps to Reproduce

Execute the code snippet locally, no need to deploy a Lambda function.

AWS Lambda Powertools for Python version

latest

AWS Lambda function runtime

3.9

Packaging format used

Lambda Layers

Debugging logs

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions