@@ -334,6 +334,7 @@ def __init__(self, *, general_config: GeneralConfig | None = None, registry: Typ
334334 self ._logging_handlers : dict [str , logging .Handler ] = {}
335335 self ._removed_root_handlers : list [tuple [logging .Handler , int ]] = []
336336 self ._changed_logger_levels : list [tuple [logging .Logger , int ]] = []
337+ self ._pinned_nat_handlers : list [tuple [logging .Handler , int ]] = []
337338 self ._telemetry_exporters : dict [str , ConfiguredTelemetryExporter ] = {}
338339
339340 self ._functions : dict [str , ConfiguredFunction ] = {}
@@ -422,6 +423,11 @@ async def _setup_telemetry(self) -> None:
422423 root_logger .setLevel (min_handler_level )
423424 nat_logger = logging .getLogger ("nat" )
424425 if nat_logger .getEffectiveLevel () > min_handler_level :
426+ old_nat_level = nat_logger .getEffectiveLevel ()
427+ for handler in nat_logger .handlers :
428+ if handler not in self ._logging_handlers .values () and handler .level < old_nat_level :
429+ self ._pinned_nat_handlers .append ((handler , handler .level ))
430+ handler .setLevel (old_nat_level )
425431 self ._changed_logger_levels .append ((nat_logger , nat_logger .level ))
426432 nat_logger .setLevel (min_handler_level )
427433
@@ -449,6 +455,8 @@ async def __aexit__(self, *exc_details):
449455 root_logger .removeHandler (handler )
450456
451457 # Restore original handlers and their levels, last change first
458+ for handler , old_level in reversed (self ._pinned_nat_handlers ):
459+ handler .setLevel (old_level )
452460 for handler , old_level in reversed (self ._removed_root_handlers ):
453461 if handler not in root_logger .handlers :
454462 root_logger .addHandler (handler )
0 commit comments