Closed
Description
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.