@@ -129,12 +129,14 @@ def __init__(
129
129
self .sampling_rate = resolve_env_var_choice (
130
130
choice = sampling_rate , env = os .getenv (constants .LOGGER_LOG_SAMPLING_RATE , 0.0 )
131
131
)
132
+ self ._is_deduplication_disabled = resolve_truthy_env_var_choice (
133
+ env = os .getenv (constants .LOGGER_LOG_DEDUPLICATION_ENV , "false" )
134
+ )
132
135
self .log_level = self ._get_log_level (level )
133
136
self .child = child
134
137
self ._handler = logging .StreamHandler (stream ) if stream is not None else logging .StreamHandler (sys .stdout )
135
138
self ._default_log_keys = {"service" : self .service , "sampling_rate" : self .sampling_rate }
136
139
self ._logger = self ._get_logger ()
137
-
138
140
self ._init_logger (** kwargs )
139
141
140
142
def __getattr__ (self , name ):
@@ -167,12 +169,16 @@ def _init_logger(self, **kwargs):
167
169
self ._logger .addHandler (self ._handler )
168
170
self .structure_logs (** kwargs )
169
171
170
- logger .debug ("Adding filter in root logger to suppress child logger records to bubble up" )
171
- for handler in logging .root .handlers :
172
- # It'll add a filter to suppress any child logger from self.service
173
- # Where service is Order, it'll reject parent logger Order,
174
- # and child loggers such as Order.checkout, Order.shared
175
- handler .addFilter (SuppressFilter (self .service ))
172
+ # Pytest Live Log feature duplicates log records for colored output
173
+ # but we explicitly add a filter for log deduplication.
174
+ # This flag disables this protection when you explicit want logs to be duplicated (#262)
175
+ if not self ._is_deduplication_disabled :
176
+ logger .debug ("Adding filter in root logger to suppress child logger records to bubble up" )
177
+ for handler in logging .root .handlers :
178
+ # It'll add a filter to suppress any child logger from self.service
179
+ # Where service is Order, it'll reject parent logger Order,
180
+ # and child loggers such as Order.checkout, Order.shared
181
+ handler .addFilter (SuppressFilter (self .service ))
176
182
177
183
# as per bug in #249, we should not be pre-configuring an existing logger
178
184
# therefore we set a custom attribute in the Logger that will be returned
0 commit comments