Skip to content

Commit 8059b58

Browse files
author
Michal Ploski
committed
Refactor code to lower cohesion
1 parent bc29018 commit 8059b58

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

aws_lambda_powertools/logging/utils.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
import logging
2-
from typing import List, Optional, TypeVar
2+
from typing import Callable, List, Optional, TypeVar
33

44
from .logger import Logger
55

66
PowertoolsLogger = TypeVar("PowertoolsLogger", bound=Logger)
77

88

99
def copy_config_to_registered_loggers(
10-
source_logger: PowertoolsLogger, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None
10+
source_logger: PowertoolsLogger,
11+
exclude: Optional[List[str]] = None,
12+
include: Optional[List[str]] = None,
1113
) -> None:
1214
"""Enable powertools logging for imported libraries.
1315
1416
Attach source logger handlers to external loggers.
1517
Modify logger level based on source logger attribute.
18+
Ensure powertools logger itself is excluded from registered list.
1619
"""
17-
registered_loggers = _find_registered_loggers(source_logger, exclude, include)
20+
21+
if include and not exclude:
22+
loggers = include
23+
filter_func = _include_registered_loggers_filter
24+
elif include and exclude:
25+
exclude = [source_logger.name, *exclude]
26+
loggers = list(set(include) - set(exclude))
27+
filter_func = _include_registered_loggers_filter
28+
elif not include and exclude:
29+
loggers = [source_logger.name, *exclude]
30+
filter_func = _exclude_registered_loggers_filter
31+
else:
32+
loggers = [source_logger.name]
33+
filter_func = _exclude_registered_loggers_filter
34+
35+
registered_loggers = _find_registered_loggers(source_logger, loggers, filter_func)
1836
for logger in registered_loggers:
1937
_configure_logger(source_logger, logger)
2038

2139

22-
def _include_registered_loggers_filter(logger_list: List[str]):
23-
return [
24-
logging.getLogger(name) for name in logging.root.manager.loggerDict if "." not in name and name in logger_list
25-
]
40+
def _include_registered_loggers_filter(loggers: List[str]):
41+
return [logging.getLogger(name) for name in logging.root.manager.loggerDict if "." not in name and name in loggers]
2642

2743

28-
def _exclude_registered_loggers_filter(logger_list: List[str]) -> List[logging.Logger]:
44+
def _exclude_registered_loggers_filter(loggers: List[str]) -> List[logging.Logger]:
2945
return [
30-
logging.getLogger(name)
31-
for name in logging.root.manager.loggerDict
32-
if "." not in name and name not in logger_list
46+
logging.getLogger(name) for name in logging.root.manager.loggerDict if "." not in name and name not in loggers
3347
]
3448

3549

3650
def _find_registered_loggers(
37-
source_logger: PowertoolsLogger, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None
51+
source_logger: PowertoolsLogger, loggers: List[str], filter_func: Callable
3852
) -> List[logging.Logger]:
39-
"""Filter root loggers based on provided parameters.
40-
41-
Ensure powertools logger itself is excluded from final list.
42-
"""
43-
root_loggers = []
44-
if include and not exclude:
45-
root_loggers = _include_registered_loggers_filter(logger_list=include)
46-
elif include and exclude:
47-
exclude = [source_logger.name, *exclude]
48-
root_loggers = _include_registered_loggers_filter(logger_list=list(set(include) - set(exclude)))
49-
elif not include and exclude:
50-
exclude = [source_logger.name, *exclude]
51-
root_loggers = _exclude_registered_loggers_filter(logger_list=exclude)
52-
else:
53-
root_loggers = _exclude_registered_loggers_filter(logger_list=[source_logger.name])
54-
53+
"""Filter root loggers based on provided parameters."""
54+
root_loggers = filter_func(loggers)
5555
source_logger.debug(f"Filtered root loggers: {root_loggers}")
5656
return root_loggers
5757

0 commit comments

Comments
 (0)