1212import os
1313import random
1414import sys
15- import time
1615import warnings
1716from contextlib import contextmanager
1817from typing import IO , TYPE_CHECKING , Any , Callable , Generator , Iterable , Mapping , TypeVar , overload
1918
2019from aws_lambda_powertools .logging .buffer .cache import LoggerBufferCache
20+ from aws_lambda_powertools .logging .buffer .functions import _create_buffer_record , _resolve_buffer_log_level
2121from aws_lambda_powertools .logging .constants import (
2222 LOGGER_ATTRIBUTE_PRECONFIGURED ,
2323)
@@ -459,12 +459,12 @@ def decorate(event, context, *args, **kwargs):
459459 return decorate
460460
461461 def _add_log_to_buffer (self , level , msg , filename , line , function , ** kwargs ):
462- if self . _buffer_cache :
463- return False
462+ # Initial implementation, will always cache
463+ self . _buffer_cache . add ( "XRAY_ID" , msg )
464464
465465 return True
466466
467- def info (
467+ def debug (
468468 self ,
469469 msg : object ,
470470 * args : object ,
@@ -477,20 +477,9 @@ def info(
477477 extra = extra or {}
478478 extra = {** extra , ** kwargs }
479479
480- if self ._logger_buffer :
481- caller_frame = inspect .stack ()[1 ]
482- record = {
483- "level" : "INFO" ,
484- "msg" : msg % args if args else msg ,
485- "filename" : caller_frame .filename ,
486- "line" : caller_frame .lineno ,
487- "function" : caller_frame .function ,
488- "extra_kwargs" : kwargs ,
489- "timestamp" : time .time (),
490- }
491- return self ._add_log_to_buffer (** record )
492- else :
493- return self ._logger .info (
480+ # Buffer is not active, flushing
481+ if not self ._logger_buffer :
482+ return self ._logger .debug (
494483 msg ,
495484 * args ,
496485 exc_info = exc_info ,
@@ -499,7 +488,11 @@ def info(
499488 extra = extra ,
500489 )
501490
502- def error (
491+ log_record = _create_buffer_record (level = "DEBUG" , msg = msg , args = args , ** kwargs )
492+
493+ self ._add_log_to_buffer (** log_record )
494+
495+ def info (
503496 self ,
504497 msg : object ,
505498 * args : object ,
@@ -512,20 +505,36 @@ def error(
512505 extra = extra or {}
513506 extra = {** extra , ** kwargs }
514507
515- return self ._logger .error (
516- msg ,
517- * args ,
518- exc_info = exc_info ,
519- stack_info = stack_info ,
520- stacklevel = stacklevel ,
521- extra = extra ,
522- )
508+ # Buffer is not active, flushing
509+ if not self ._logger_buffer :
510+ return self ._logger .info (
511+ msg ,
512+ * args ,
513+ exc_info = exc_info ,
514+ stack_info = stack_info ,
515+ stacklevel = stacklevel ,
516+ extra = extra ,
517+ )
523518
524- def exception (
519+ if _resolve_buffer_log_level (self ._logger_buffer .minimum_log_level , "INFO" ):
520+ return self ._logger .info (
521+ msg ,
522+ * args ,
523+ exc_info = exc_info ,
524+ stack_info = stack_info ,
525+ stacklevel = stacklevel ,
526+ extra = extra ,
527+ )
528+
529+ log_record : dict [str , Any ] = _create_buffer_record (level = "INFO" , msg = msg , args = args , ** kwargs )
530+
531+ self ._add_log_to_buffer (** log_record )
532+
533+ def warning (
525534 self ,
526535 msg : object ,
527536 * args : object ,
528- exc_info : logging ._ExcInfoType = True ,
537+ exc_info : logging ._ExcInfoType = None ,
529538 stack_info : bool = False ,
530539 stacklevel : int = 2 ,
531540 extra : Mapping [str , object ] | None = None ,
@@ -534,16 +543,32 @@ def exception(
534543 extra = extra or {}
535544 extra = {** extra , ** kwargs }
536545
537- return self ._logger .exception (
538- msg ,
539- * args ,
540- exc_info = exc_info ,
541- stack_info = stack_info ,
542- stacklevel = stacklevel ,
543- extra = extra ,
544- )
546+ # Buffer is not active, flushing
547+ if not self ._logger_buffer :
548+ return self ._logger .warning (
549+ msg ,
550+ * args ,
551+ exc_info = exc_info ,
552+ stack_info = stack_info ,
553+ stacklevel = stacklevel ,
554+ extra = extra ,
555+ )
545556
546- def critical (
557+ if _resolve_buffer_log_level (self ._logger_buffer .minimum_log_level , "WARNING" ):
558+ return self ._logger .warning (
559+ msg ,
560+ * args ,
561+ exc_info = exc_info ,
562+ stack_info = stack_info ,
563+ stacklevel = stacklevel ,
564+ extra = extra ,
565+ )
566+
567+ log_record = _create_buffer_record (level = "WARNING" , msg = msg , args = args , ** kwargs )
568+
569+ self ._add_log_to_buffer (** log_record )
570+
571+ def error (
547572 self ,
548573 msg : object ,
549574 * args : object ,
@@ -556,7 +581,7 @@ def critical(
556581 extra = extra or {}
557582 extra = {** extra , ** kwargs }
558583
559- return self ._logger .critical (
584+ return self ._logger .error (
560585 msg ,
561586 * args ,
562587 exc_info = exc_info ,
@@ -565,7 +590,7 @@ def critical(
565590 extra = extra ,
566591 )
567592
568- def warning (
593+ def critical (
569594 self ,
570595 msg : object ,
571596 * args : object ,
@@ -578,7 +603,7 @@ def warning(
578603 extra = extra or {}
579604 extra = {** extra , ** kwargs }
580605
581- return self ._logger .warning (
606+ return self ._logger .critical (
582607 msg ,
583608 * args ,
584609 exc_info = exc_info ,
@@ -587,11 +612,11 @@ def warning(
587612 extra = extra ,
588613 )
589614
590- def debug (
615+ def exception (
591616 self ,
592617 msg : object ,
593618 * args : object ,
594- exc_info : logging ._ExcInfoType = None ,
619+ exc_info : logging ._ExcInfoType = True ,
595620 stack_info : bool = False ,
596621 stacklevel : int = 2 ,
597622 extra : Mapping [str , object ] | None = None ,
@@ -600,7 +625,7 @@ def debug(
600625 extra = extra or {}
601626 extra = {** extra , ** kwargs }
602627
603- return self ._logger .debug (
628+ return self ._logger .exception (
604629 msg ,
605630 * args ,
606631 exc_info = exc_info ,
0 commit comments