Skip to content

Commit 86288b6

Browse files
authored
fix(logger): clear_state should keep custom key formats (#1095)
1 parent 006caf6 commit 86288b6

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

aws_lambda_powertools/logging/formatter.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ def __init__(
127127

128128
super(LambdaPowertoolsFormatter, self).__init__(datefmt=self.datefmt)
129129

130-
keys_combined = {**self._build_default_keys(), **kwargs}
131-
self.log_format.update(**keys_combined)
130+
self.keys_combined = {**self._build_default_keys(), **kwargs}
131+
self.log_format.update(**self.keys_combined)
132132

133133
def serialize(self, log: Dict) -> str:
134134
"""Serialize structured log dict to JSON str"""
@@ -187,7 +187,7 @@ def remove_keys(self, keys: Iterable[str]):
187187

188188
def clear_state(self):
189189
self.log_format = dict.fromkeys(self.log_record_order)
190-
self.log_format.update(**self._build_default_keys())
190+
self.log_format.update(**self.keys_combined)
191191

192192
@staticmethod
193193
def _build_default_keys():

tests/functional/test_logger.py

+20
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,26 @@ def handler(event, context):
683683
assert key in second_log
684684

685685

686+
def test_clear_state_keeps_custom_keys(lambda_context, stdout, service_name):
687+
# GIVEN
688+
location_format = "%(module)s.%(funcName)s:clear_state"
689+
logger = Logger(service=service_name, stream=stdout, location=location_format, custom_key="foo")
690+
691+
# WHEN clear_state is set
692+
@logger.inject_lambda_context(clear_state=True)
693+
def handler(event, context):
694+
logger.info("Foo")
695+
696+
# THEN all standard keys should be available as usual
697+
handler({}, lambda_context)
698+
handler({}, lambda_context)
699+
700+
first_log, second_log = capture_multiple_logging_statements_output(stdout)
701+
for log in (first_log, second_log):
702+
assert "foo" == log["custom_key"]
703+
assert "test_logger.handler:clear_state" == log["location"]
704+
705+
686706
def test_clear_state_keeps_exception_keys(lambda_context, stdout, service_name):
687707
# GIVEN
688708
logger = Logger(service=service_name, stream=stdout)

0 commit comments

Comments
 (0)