8
8
from typing import Any , Callable , Dict , Union
9
9
10
10
from .exceptions import InvalidLoggerSamplingRateError
11
+ from .filters import SuppressFilter
11
12
from .formatter import JsonFormatter
12
13
from .lambda_context import build_lambda_context_model
13
14
@@ -147,13 +148,6 @@ def _get_logger(self):
147
148
def _init_logger (self , ** kwargs ):
148
149
"""Configures new logger"""
149
150
150
- # Lambda by default configures the root logger handler
151
- # therefore, we need to remove it to prevent messages being logged twice
152
- # when customers use our Logger
153
- logger .debug ("Removing Lambda root handler whether it exists" )
154
- root_logger = logging .getLogger ()
155
- root_logger .handlers .clear ()
156
-
157
151
# Skip configuration if it's a child logger to prevent
158
152
# multiple handlers being attached as well as different sampling mechanisms
159
153
# and multiple messages from being logged as handlers can be duplicated
@@ -163,6 +157,10 @@ def _init_logger(self, **kwargs):
163
157
self ._logger .addHandler (self ._handler )
164
158
self .structure_logs (** kwargs )
165
159
160
+ logger .debug ("Adding filter in root logger to suppress child logger records to bubble up" )
161
+ for handler in logging .root .handlers :
162
+ handler .addFilter (SuppressFilter (self .service ))
163
+
166
164
def _configure_sampling (self ):
167
165
"""Dynamically set log level based on sampling rate
168
166
0 commit comments