Skip to content

Logger clear_state flip removing structure keys #1084

Closed
@alexanderluiscampino

Description

@alexanderluiscampino

Using the clear_state argument in the logger decorator for lambda handlers is destroying the default structured keys.

What were you trying to accomplish?
Just trying to get some lambda logs with custom keys, which ideally would be cleaned up after each warm call, such that those custom key values do not trickle to the next invocation.

Expected Behavior

Using the clear_state argument should not remove the default structured keys. Those should remain fixed. Only custom keys should be removed upon new invocation.

Current Behavior

Currently, default structured keys are being removed from the get-go.

Steps to Reproduce (for bugs)

First, this:

from aws_lambda_powertools import logging
from aws_lambda_powertools.utilities.typing import LambdaContext


logger = logging.Logger()

@logger.inject_lambda_context(clear_state=False)
def lambda_handler(event: dict, context: LambdaContext):
    logger.info("HEREEE")

Output:

{
    "level": "INFO",
    "location": "lambda_handler:21",
    "message": "HEREEE",
    "timestamp": "2022-03-29 17:53:56,985+0000",
    "service": "service_undefined",
    "cold_start": true,
    "function_name": "alex-test-layers",
    "function_memory_size": "1024",
    "function_arn": "arn:aws:lambda:us-west-2:111111111111:function:alex-test-layers",
    "function_request_id": "a1453466-2abe-4a55-ad9e-640e745f4133",
    "xray_trace_id": "1-624347b4-589b3226782e49797249edb1"
}

Now this clear_state=True

from aws_lambda_powertools import logging
from aws_lambda_powertools.utilities.typing import LambdaContext


logger = logging.Logger()

@logger.inject_lambda_context(clear_state=True)
def lambda_handler(event: dict, context: LambdaContext):
    logger.info("HEREEE")

Output:

{
    "message": "HEREEE",
    "service": "service_undefined",
    "cold_start": true,
    "function_name": "alex-test-layers",
    "function_memory_size": "1024",
    "function_arn": "arn:aws:lambda:us-west-2:111111111111:function:alex-test-layers",
    "function_request_id": "e3cf7717-88ea-43dc-b80c-57754bc6b8c9",
    "xray_trace_id": "1-62435f24-54e5827e68d838640494dca4"
}

Environment

  • Powertools version used: aws-lambda-powertools==1.25.5
  • Packaging format (Layers, PyPi): Layers
  • AWS Lambda function runtime: Python 3.8
  • Debugging logs: Above.

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