Skip to content

Commit e39229a

Browse files
Start flushing logs
1 parent ed3902d commit e39229a

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

aws_lambda_powertools/logging/logger.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -457,15 +457,20 @@ def decorate(event, context, *args, **kwargs):
457457

458458
return decorate
459459

460-
def _add_log_line_to_buffer(self, level, msg, filename, line, function, **kwargs):
460+
def _add_log_line_to_buffer(self, log_record: dict[str, Any]):
461461
# Initial implementation, will always cache
462-
self._buffer_cache.add("XRAY_ID", msg)
463-
464-
return True
462+
# Add logic for "empty"
463+
tracer_id = os.getenv(constants.XRAY_TRACE_ID_ENV, None)
464+
if tracer_id:
465+
self._buffer_cache.add(tracer_id, log_record)
465466

466467
def flush_buffer(self):
467-
## INITIAL IMPLEMENTATION
468-
self._logger.debug("Buffer was flushed")
468+
# Initial logic
469+
tracer_id = os.getenv(constants.XRAY_TRACE_ID_ENV, None)
470+
for item in self._buffer_cache.get(tracer_id):
471+
self._logger.debug(item["msg"])
472+
473+
self._buffer_cache.clear()
469474

470475
def debug(
471476
self,
@@ -493,7 +498,7 @@ def debug(
493498

494499
log_record = _create_buffer_record(level="DEBUG", msg=msg, args=args, **kwargs)
495500

496-
self._add_log_line_to_buffer(**log_record)
501+
self._add_log_line_to_buffer(log_record)
497502

498503
def info(
499504
self,
@@ -532,7 +537,7 @@ def info(
532537

533538
log_record: dict[str, Any] = _create_buffer_record(level="INFO", msg=msg, args=args, **kwargs)
534539

535-
self._add_log_line_to_buffer(**log_record)
540+
self._add_log_line_to_buffer(log_record)
536541

537542
def warning(
538543
self,
@@ -571,7 +576,7 @@ def warning(
571576

572577
log_record = _create_buffer_record(level="WARNING", msg=msg, args=args, **kwargs)
573578

574-
self._add_log_line_to_buffer(**log_record)
579+
self._add_log_line_to_buffer(log_record)
575580

576581
def error(
577582
self,

tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from aws_lambda_powertools import Logger
1212
from aws_lambda_powertools.logging.buffer import LoggerBufferConfig
13+
from aws_lambda_powertools.shared import constants
1314

1415

1516
@pytest.fixture
@@ -95,8 +96,9 @@ def test_logger_buffer_is_never_buffered_with_error_new(stdout, service_name):
9596

9697

9798
@pytest.mark.parametrize("log_level", ["CRITICAL", "ERROR"])
98-
def test_logger_buffer_is_flushed_when_an_error_happens(stdout, service_name, log_level):
99+
def test_logger_buffer_is_flushed_when_an_error_happens(stdout, service_name, log_level, monkeypatch):
99100
# GIVEN: A logger configured with buffer
101+
monkeypatch.setenv(constants.XRAY_TRACE_ID_ENV, "1234")
100102
logger_buffer_config = LoggerBufferConfig(max_size=10240, minimum_log_level="DEBUG", flush_on_error=True)
101103
logger = Logger(level="DEBUG", service=service_name, stream=stdout, logger_buffer=logger_buffer_config)
102104

@@ -115,7 +117,8 @@ def test_logger_buffer_is_flushed_when_an_error_happens(stdout, service_name, lo
115117

116118
# THEN: We expect the log record is not buffered
117119
log = capture_multiple_logging_statements_output(stdout)
118-
assert "Buffer was flushed" == log[0]["message"]
120+
assert "this log line will be flushed" == log[0]["message"]
121+
assert "this log line will be flushed too" == log[1]["message"]
119122

120123

121124
@pytest.mark.parametrize("log_level", ["CRITICAL", "ERROR"])

0 commit comments

Comments
 (0)