Skip to content

Commit 2dbb222

Browse files
committed
re-use common patterns
1 parent c2d17c3 commit 2dbb222

File tree

1 file changed

+48
-25
lines changed

1 file changed

+48
-25
lines changed

packages/service-library/src/servicelib/logging_utils.py

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,44 @@ def _dampen_noisy_loggers(
216216
logging.getLogger(name).setLevel(quiet_level)
217217

218218

219+
def _configure_common_logging_settings(
220+
*,
221+
log_format_local_dev_enabled: bool,
222+
tracing_settings: TracingSettings | None,
223+
log_base_level: LogLevelInt,
224+
noisy_loggers: tuple[str, ...] | None,
225+
) -> logging.Formatter:
226+
"""
227+
Common configuration logic shared by both sync and async logging setups.
228+
229+
Returns the configured formatter to be used with the appropriate handler.
230+
"""
231+
_setup_base_logging_level(log_base_level)
232+
if noisy_loggers is not None:
233+
_dampen_noisy_loggers(noisy_loggers)
234+
if tracing_settings is not None:
235+
setup_log_tracing(tracing_settings=tracing_settings)
236+
237+
return _setup_logging_formatter(
238+
tracing_settings=tracing_settings,
239+
log_format_local_dev_enabled=log_format_local_dev_enabled,
240+
)
241+
242+
243+
def _apply_logging_configuration(
244+
handler: logging.Handler,
245+
logger_filter_mapping: dict[LoggerName, list[MessageSubstring]],
246+
) -> None:
247+
"""
248+
Apply the logging configuration with the given handler.
249+
"""
250+
_clean_all_handlers()
251+
_set_root_handler(handler)
252+
253+
if logger_filter_mapping:
254+
_apply_logger_filters(logger_filter_mapping)
255+
256+
219257
def setup_loggers(
220258
*,
221259
log_format_local_dev_enabled: bool,
@@ -260,26 +298,19 @@ def setup_loggers(
260298
log_base_level: Base logging level to set
261299
noisy_loggers: Loggers to set to a quieter level
262300
"""
263-
_setup_base_logging_level(log_base_level)
264-
if noisy_loggers is not None:
265-
_dampen_noisy_loggers(noisy_loggers)
266-
if tracing_settings is not None:
267-
setup_log_tracing(tracing_settings=tracing_settings)
268-
formatter = _setup_logging_formatter(
269-
tracing_settings=tracing_settings,
301+
formatter = _configure_common_logging_settings(
270302
log_format_local_dev_enabled=log_format_local_dev_enabled,
303+
tracing_settings=tracing_settings,
304+
log_base_level=log_base_level,
305+
noisy_loggers=noisy_loggers,
271306
)
272307

273308
# Create a properly formatted handler for the root logger
274309
stream_handler = logging.StreamHandler()
275310
stream_handler.setFormatter(formatter)
276311

277312
_store_logger_state(_get_all_loggers())
278-
_clean_all_handlers()
279-
_set_root_handler(stream_handler)
280-
281-
if logger_filter_mapping:
282-
_apply_logger_filters(logger_filter_mapping)
313+
_apply_logging_configuration(stream_handler, logger_filter_mapping)
283314

284315

285316
@contextmanager
@@ -381,26 +412,18 @@ def async_loggers(
381412
log_base_level: Base logging level to set
382413
noisy_loggers: Loggers to set to a quieter level
383414
"""
384-
_setup_base_logging_level(log_base_level)
385-
if noisy_loggers is not None:
386-
_dampen_noisy_loggers(noisy_loggers)
387-
388-
if tracing_settings is not None:
389-
setup_log_tracing(tracing_settings=tracing_settings)
390-
formatter = _setup_logging_formatter(
391-
tracing_settings=tracing_settings,
415+
formatter = _configure_common_logging_settings(
392416
log_format_local_dev_enabled=log_format_local_dev_enabled,
417+
tracing_settings=tracing_settings,
418+
log_base_level=log_base_level,
419+
noisy_loggers=noisy_loggers,
393420
)
394421

395422
with (
396423
_queued_logging_handler(formatter) as queue_handler,
397424
_stored_logger_states(_get_all_loggers()),
398425
):
399-
_clean_all_handlers()
400-
_set_root_handler(queue_handler)
401-
402-
if logger_filter_mapping:
403-
_apply_logger_filters(logger_filter_mapping)
426+
_apply_logging_configuration(queue_handler, logger_filter_mapping)
404427

405428
with log_context(_logger, logging.INFO, "Asynchronous logging"):
406429
yield

0 commit comments

Comments
 (0)