16
16
from contextlib import contextmanager
17
17
from typing import IO , TYPE_CHECKING , Any , Callable , Generator , Iterable , Mapping , TypeVar , overload
18
18
19
+ from aws_lambda_powertools .logging .buffer .cache import LoggerBufferCache
19
20
from aws_lambda_powertools .logging .constants import (
20
21
LOGGER_ATTRIBUTE_PRECONFIGURED ,
21
22
)
36
37
from aws_lambda_powertools .utilities import jmespath_utils
37
38
38
39
if TYPE_CHECKING :
40
+ from aws_lambda_powertools .logging .buffer .config import LoggerBufferConfig
41
+ from aws_lambda_powertools .logging .types import LOG_LEVEL_VALUES
39
42
from aws_lambda_powertools .shared .types import AnyCallableT
40
43
44
+
41
45
logger = logging .getLogger (__name__ )
42
46
43
47
is_cold_start = True
@@ -82,7 +86,7 @@ class Logger:
82
86
----------
83
87
service : str, optional
84
88
service name to be appended in logs, by default "service_undefined"
85
- level : str , int optional
89
+ level : Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] , int optional
86
90
The level to set. Can be a string representing the level name: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
87
91
or an integer representing the level value: 10 for 'DEBUG', 20 for 'INFO', 30 for 'WARNING', 40 for 'ERROR', 50 for 'CRITICAL'.
88
92
by default "INFO"
@@ -200,7 +204,7 @@ class Logger:
200
204
def __init__ (
201
205
self ,
202
206
service : str | None = None ,
203
- level : str | int | None = None ,
207
+ level : LOG_LEVEL_VALUES | int | None = None ,
204
208
child : bool = False ,
205
209
sampling_rate : float | None = None ,
206
210
stream : IO [str ] | None = None ,
@@ -216,6 +220,7 @@ def __init__(
216
220
utc : bool = False ,
217
221
use_rfc3339 : bool = False ,
218
222
serialize_stacktrace : bool = True ,
223
+ logger_buffer : LoggerBufferConfig | None = None ,
219
224
** kwargs ,
220
225
) -> None :
221
226
self .service = resolve_env_var_choice (
@@ -252,6 +257,10 @@ def __init__(
252
257
"serialize_stacktrace" : serialize_stacktrace ,
253
258
}
254
259
260
+ self ._logger_buffer = logger_buffer
261
+ if self ._logger_buffer :
262
+ self ._buffer_cache = LoggerBufferCache (max_size_bytes = self ._logger_buffer .max_size )
263
+
255
264
self ._init_logger (formatter_options = formatter_options , log_level = level , ** kwargs )
256
265
257
266
if self .log_uncaught_exceptions :
0 commit comments