Skip to content

Commit ffa4a35

Browse files
author
Michael Brewer
authored
feat(logger): log_event support event data classes (e.g. S3Event) (#984)
1 parent dea696e commit ffa4a35

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

aws_lambda_powertools/logging/logger.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ def decorate(event, context, **kwargs):
349349

350350
if log_event:
351351
logger.debug("Event received")
352-
self.info(event)
352+
self.info(getattr(event, "raw_event", event))
353353

354354
return lambda_handler(event, context)
355355

tests/functional/test_logger.py

+19
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from aws_lambda_powertools.logging.formatter import BasePowertoolsFormatter
1818
from aws_lambda_powertools.logging.logger import set_package_logger
1919
from aws_lambda_powertools.shared import constants
20+
from aws_lambda_powertools.utilities.data_classes import S3Event, event_source
2021

2122

2223
@pytest.fixture
@@ -635,3 +636,21 @@ def test_use_datetime(stdout, service_name, utc):
635636
assert re.fullmatch(
636637
f"custom timestamp: milliseconds=[0-9]+ microseconds=[0-9]+ timezone={re.escape(expected_tz)}", log["timestamp"]
637638
)
639+
640+
641+
def test_inject_lambda_context_log_event_request_data_classes(lambda_context, stdout, lambda_event, service_name):
642+
# GIVEN Logger is initialized
643+
logger = Logger(service=service_name, stream=stdout)
644+
645+
# WHEN a lambda function is decorated with logger instructed to log event
646+
# AND the event is an event source data class
647+
@event_source(data_class=S3Event)
648+
@logger.inject_lambda_context(log_event=True)
649+
def handler(event, context):
650+
logger.info("Hello")
651+
652+
handler(lambda_event, lambda_context)
653+
654+
# THEN logger should log event received from Lambda
655+
logged_event, _ = capture_multiple_logging_statements_output(stdout)
656+
assert logged_event["message"] == lambda_event

0 commit comments

Comments
 (0)