@@ -242,6 +242,8 @@ def __init__(
242242 buffer_config : LoggerBufferConfig | None = None ,
243243 ** kwargs ,
244244 ) -> None :
245+ self ._buffer_config = buffer_config
246+ self ._buffer_cache = LoggerBufferCache (max_size_bytes = self ._buffer_config .max_bytes ) if buffer_config else None
245247
246248 # Used in case of sampling
247249 self .initial_log_level = self ._determine_log_level (level )
@@ -1057,7 +1059,7 @@ def _determine_log_level(self, level: str | int | None) -> str | int:
10571059 warnings .warn (
10581060 "Advanced Logging Controls (ALC) Log Level is less verbose than Log Buffering Log Level. "
10591061 "Buffered logs will be filtered by ALC" ,
1060- UserWarning ,
1062+ PowertoolsUserWarning ,
10611063 stacklevel = 2 ,
10621064 )
10631065
@@ -1196,6 +1198,23 @@ def flush_buffer(self) -> None:
11961198 """
11971199 tracer_id = get_tracer_id ()
11981200
1201+ # Check ALC level against buffer level
1202+ lambda_log_level = self ._get_aws_lambda_log_level ()
1203+ if lambda_log_level :
1204+ # Check if buffer level is less verbose than ALC
1205+ if (
1206+ hasattr (self , "_buffer_config" )
1207+ and self ._buffer_config
1208+ and logging .getLevelName (lambda_log_level )
1209+ > logging .getLevelName (self ._buffer_config .buffer_at_verbosity )
1210+ ):
1211+ warnings .warn (
1212+ "Advanced Logging Controls (ALC) Log Level is less verbose than Log Buffering Log Level. "
1213+ "Some logs might be missing" ,
1214+ PowertoolsUserWarning ,
1215+ stacklevel = 2 ,
1216+ )
1217+
11991218 # Flushing log without a tracer id? Return
12001219 if not tracer_id :
12011220 return
@@ -1205,20 +1224,6 @@ def flush_buffer(self) -> None:
12051224 if not buffer :
12061225 return
12071226
1208- # Check ALC level before flushing
1209- alc_level = self ._get_aws_lambda_log_level ()
1210- if (
1211- alc_level is not None
1212- and self ._buffer_config
1213- and logging .getLevelName (alc_level ) > logging .getLevelName (self ._buffer_config .buffer_at_verbosity )
1214- ):
1215- warnings .warn (
1216- message = "Advanced Logging Controls (ALC) Log Level is less verbose than Log Buffering Log Level."
1217- "Some logs might be missing." ,
1218- category = UserWarning ,
1219- stacklevel = 2 ,
1220- )
1221-
12221227 # Process log records
12231228 for log_line in buffer :
12241229 self ._create_and_flush_log_record (log_line )
0 commit comments