From fc86d170db933e9c894001ff33ee95632af77d16 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 2 Jun 2020 18:01:36 +0100 Subject: [PATCH 1/4] fix: str formatting for reserved keys only #38 --- aws_lambda_powertools/logging/logger.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index bbcf6589060..4fc0db7e056 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -62,6 +62,7 @@ def __init__(self, **kwargs): datefmt = kwargs.pop("datefmt", None) super(JsonFormatter, self).__init__(datefmt=datefmt) + self.reserved_keys = ["timestamp", "level", "location"] self.format_dict = { "timestamp": "%(asctime)s", "level": "%(levelname)s", @@ -76,10 +77,12 @@ def format(self, record): # noqa: A003 log_dict = {} for key, value in self.format_dict.items(): - if value: + if value and key in self.reserved_keys: # converts default logging expr to its record value # e.g. '%(asctime)s' to '2020-04-24 09:35:40,698' log_dict[key] = value % record_dict + else: + log_dict[key] = value if isinstance(record_dict["msg"], dict): log_dict["message"] = record_dict["msg"] From aadf1507c8e98ec10c5381398c42435a07915742 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 2 Jun 2020 18:02:36 +0100 Subject: [PATCH 2/4] fix: cold_start value from str to actual bool #38 --- aws_lambda_powertools/logging/logger.py | 13 ++++++------- tests/functional/test_logger.py | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index 4fc0db7e056..ff3d3bb8f88 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -152,20 +152,19 @@ def handler(evt, ctx): raise DeprecationWarning("Use Logger instead - This method will be removed when GA") -def _is_cold_start() -> str: - """Verifies whether is cold start and return a string used for struct logging +def _is_cold_start() -> bool: + """Verifies whether is cold start Returns ------- - str - lower case bool as a string - aws_lambda_logging doesn't support bool; cast cold start value to string + bool + cold start bool value """ - cold_start = "false" + cold_start = False global is_cold_start if is_cold_start: - cold_start = str(is_cold_start).lower() + cold_start = is_cold_start is_cold_start = False return cold_start diff --git a/tests/functional/test_logger.py b/tests/functional/test_logger.py index c1a882f3320..bbc8233b962 100644 --- a/tests/functional/test_logger.py +++ b/tests/functional/test_logger.py @@ -228,12 +228,12 @@ def handler(event, context): first_log, second_log, third_log, fourth_log = logs # First execution - assert "true" == first_log["cold_start"] - assert "true" == second_log["cold_start"] + assert True == first_log["cold_start"] + assert True == second_log["cold_start"] # Second execution - assert "false" == third_log["cold_start"] - assert "false" == fourth_log["cold_start"] + assert False == third_log["cold_start"] + assert False == fourth_log["cold_start"] def test_log_metric(capsys): From e66138ada2a0c0ffd46d8f19878f71faf03213e8 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 2 Jun 2020 18:07:02 +0100 Subject: [PATCH 3/4] fix: memory_size value from str to actual int #38 --- aws_lambda_powertools/helper/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda_powertools/helper/models.py b/aws_lambda_powertools/helper/models.py index 16a5df3669e..bc6ea23eaa6 100644 --- a/aws_lambda_powertools/helper/models.py +++ b/aws_lambda_powertools/helper/models.py @@ -65,7 +65,7 @@ def build_lambda_context_model(context: object) -> LambdaContextModel: context = { "function_name": context.function_name, - "function_memory_size": str(context.memory_limit_in_mb), + "function_memory_size": context.memory_limit_in_mb, "function_arn": context.invoked_function_arn, "function_request_id": context.aws_request_id, } From 990074e9b2dbb72e6374dcc540b9dc7fa406f7d2 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 2 Jun 2020 18:07:29 +0100 Subject: [PATCH 4/4] chore: linting --- tests/functional/test_logger.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/functional/test_logger.py b/tests/functional/test_logger.py index bbc8233b962..0fce60c5291 100644 --- a/tests/functional/test_logger.py +++ b/tests/functional/test_logger.py @@ -228,12 +228,12 @@ def handler(event, context): first_log, second_log, third_log, fourth_log = logs # First execution - assert True == first_log["cold_start"] - assert True == second_log["cold_start"] + assert first_log["cold_start"] is True + assert second_log["cold_start"] is True # Second execution - assert False == third_log["cold_start"] - assert False == fourth_log["cold_start"] + assert third_log["cold_start"] is False + assert fourth_log["cold_start"] is False def test_log_metric(capsys):