diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index a85593c9db7..9f9ca1baf54 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -1197,6 +1197,10 @@ def flush_buffer(self) -> None: tracer_id = get_tracer_id() + # no buffer config? return + if not self._buffer_config: + return + # Flushing log without a tracer id? Return if not tracer_id: return @@ -1206,9 +1210,6 @@ def flush_buffer(self) -> None: if not buffer: return - if not self._buffer_config: - return - # Check ALC level against buffer level lambda_log_level = self._get_aws_lambda_log_level() if lambda_log_level: diff --git a/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py b/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py index 7ee3d4c97ff..b643cfd0542 100644 --- a/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py +++ b/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py @@ -391,6 +391,30 @@ def handler(event, context): assert len(log) == 0 +def test_flush_buffer_log_output_without_buffer_config(stdout, service_name, lambda_context, monkeypatch): + # Set initial trace ID for first Lambda invocation + monkeypatch.setenv(constants.XRAY_TRACE_ID_ENV, "1-67c39786-5908a82a246fb67f3089263f") + + # GIVEN A logger without buffer configuration + logger = Logger(level="DEBUG", service=service_name, stream=stdout) + + @logger.inject_lambda_context(flush_buffer_on_uncaught_error=True) + def handler(event, context): + # Log messages are not buffered and should be output immediately + logger.debug("debug message - 1") + logger.debug("debug message - 2") + raise ValueError("Test error") + + # WHEN Invoking the handler and expecting a ValueError + # AND flush_buffer_on_uncaught_error is True but there is no logger buffer configuration + with pytest.raises(ValueError): + handler({}, lambda_context) + + # THEN Verify that log messages are flushed without any exception + log = capture_multiple_logging_statements_output(stdout) + assert len(log) == 2, "Expected two log messages" + + def test_buffer_configuration_and_buffer_propagation_across_logger_instances(stdout, service_name, monkeypatch): monkeypatch.setenv(constants.XRAY_TRACE_ID_ENV, "1-67c39786-5908a82a246fb67f3089263f")