12
12
import os
13
13
import random
14
14
import sys
15
- import time
16
15
import warnings
17
16
from contextlib import contextmanager
18
17
from typing import IO , TYPE_CHECKING , Any , Callable , Generator , Iterable , Mapping , TypeVar , overload
19
18
20
19
from aws_lambda_powertools .logging .buffer .cache import LoggerBufferCache
20
+ from aws_lambda_powertools .logging .buffer .functions import _create_buffer_record , _resolve_buffer_log_level
21
21
from aws_lambda_powertools .logging .constants import (
22
22
LOGGER_ATTRIBUTE_PRECONFIGURED ,
23
23
)
@@ -459,12 +459,12 @@ def decorate(event, context, *args, **kwargs):
459
459
return decorate
460
460
461
461
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 )
464
464
465
465
return True
466
466
467
- def info (
467
+ def debug (
468
468
self ,
469
469
msg : object ,
470
470
* args : object ,
@@ -477,20 +477,9 @@ def info(
477
477
extra = extra or {}
478
478
extra = {** extra , ** kwargs }
479
479
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 (
494
483
msg ,
495
484
* args ,
496
485
exc_info = exc_info ,
@@ -499,7 +488,11 @@ def info(
499
488
extra = extra ,
500
489
)
501
490
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 (
503
496
self ,
504
497
msg : object ,
505
498
* args : object ,
@@ -512,20 +505,36 @@ def error(
512
505
extra = extra or {}
513
506
extra = {** extra , ** kwargs }
514
507
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
+ )
523
518
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 (
525
534
self ,
526
535
msg : object ,
527
536
* args : object ,
528
- exc_info : logging ._ExcInfoType = True ,
537
+ exc_info : logging ._ExcInfoType = None ,
529
538
stack_info : bool = False ,
530
539
stacklevel : int = 2 ,
531
540
extra : Mapping [str , object ] | None = None ,
@@ -534,16 +543,32 @@ def exception(
534
543
extra = extra or {}
535
544
extra = {** extra , ** kwargs }
536
545
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
+ )
545
556
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 (
547
572
self ,
548
573
msg : object ,
549
574
* args : object ,
@@ -556,7 +581,7 @@ def critical(
556
581
extra = extra or {}
557
582
extra = {** extra , ** kwargs }
558
583
559
- return self ._logger .critical (
584
+ return self ._logger .error (
560
585
msg ,
561
586
* args ,
562
587
exc_info = exc_info ,
@@ -565,7 +590,7 @@ def critical(
565
590
extra = extra ,
566
591
)
567
592
568
- def warning (
593
+ def critical (
569
594
self ,
570
595
msg : object ,
571
596
* args : object ,
@@ -578,7 +603,7 @@ def warning(
578
603
extra = extra or {}
579
604
extra = {** extra , ** kwargs }
580
605
581
- return self ._logger .warning (
606
+ return self ._logger .critical (
582
607
msg ,
583
608
* args ,
584
609
exc_info = exc_info ,
@@ -587,11 +612,11 @@ def warning(
587
612
extra = extra ,
588
613
)
589
614
590
- def debug (
615
+ def exception (
591
616
self ,
592
617
msg : object ,
593
618
* args : object ,
594
- exc_info : logging ._ExcInfoType = None ,
619
+ exc_info : logging ._ExcInfoType = True ,
595
620
stack_info : bool = False ,
596
621
stacklevel : int = 2 ,
597
622
extra : Mapping [str , object ] | None = None ,
@@ -600,7 +625,7 @@ def debug(
600
625
extra = extra or {}
601
626
extra = {** extra , ** kwargs }
602
627
603
- return self ._logger .debug (
628
+ return self ._logger .exception (
604
629
msg ,
605
630
* args ,
606
631
exc_info = exc_info ,
0 commit comments