From e0719899d311a0ababcf7c055c88d1129bbf1f85 Mon Sep 17 00:00:00 2001 From: Jacob Fuss Date: Fri, 15 Nov 2019 09:35:14 -0600 Subject: [PATCH] fix: override botocore logging to a NullHandler --- samcli/cli/main.py | 2 ++ samcli/lib/utils/sam_logging.py | 19 +++++++++++++++++++ tests/unit/lib/utils/test_sam_logging.py | 10 ++++++++++ 3 files changed, 31 insertions(+) diff --git a/samcli/cli/main.py b/samcli/cli/main.py index c4e0279d6d..ede907bdbf 100644 --- a/samcli/cli/main.py +++ b/samcli/cli/main.py @@ -97,6 +97,8 @@ def cli(ctx): sam_cli_logger = logging.getLogger("samcli") sam_cli_formatter = logging.Formatter("%(message)s") lambda_builders_logger = logging.getLogger("aws_lambda_builders") + botocore_logger = logging.getLogger("botocore") SamCliLogger.configure_logger(sam_cli_logger, sam_cli_formatter, logging.INFO) SamCliLogger.configure_logger(lambda_builders_logger, sam_cli_formatter, logging.INFO) + SamCliLogger.configure_null_logger(botocore_logger) diff --git a/samcli/lib/utils/sam_logging.py b/samcli/lib/utils/sam_logging.py index bf40d2ccaf..2222640ab4 100644 --- a/samcli/lib/utils/sam_logging.py +++ b/samcli/lib/utils/sam_logging.py @@ -28,3 +28,22 @@ def configure_logger(logger, formatter, level): logger.setLevel(level) logger.propagate = False logger.addHandler(log_stream_handler) + + @staticmethod + def configure_null_logger(logger): + """ + Configure a Logger with a NullHandler + + Useful for libraries that do not follow: https://docs.python.org/3.6/howto/logging.html#configuring-logging-for-a-library + + Parameters + ---------- + logger logging.getLogger + Logger to configure + + Returns + ------- + None + """ + logger.propagate = False + logger.addHandler(logging.NullHandler()) diff --git a/tests/unit/lib/utils/test_sam_logging.py b/tests/unit/lib/utils/test_sam_logging.py index b2fb1654ce..9a4824478a 100644 --- a/tests/unit/lib/utils/test_sam_logging.py +++ b/tests/unit/lib/utils/test_sam_logging.py @@ -22,3 +22,13 @@ def test_configure_samcli_logger(self, logging_patch): logger_mock.addHandler.assert_called_once_with(stream_handler_mock) stream_handler_mock.setLevel.assert_called_once_with(2) stream_handler_mock.setFormatter.assert_called_once_with(formatter_mock) + + @patch("samcli.lib.utils.sam_logging.logging") + def test_configure_samcli_logger(self, logging_patch): + logger_mock = Mock() + + SamCliLogger.configure_null_logger(logger_mock) + + self.assertFalse(logger_mock.propagate) + + logger_mock.addHandler.assert_called_once_with(logging_patch.NullHandler())