Utility class for configuring application-wide logging.
This class provides methods to create consistently configured loggers,
manage log levels, and control the behavior of third-party loggers.
It uses the log level settings from MetadataConfiguration by default.
Attributes: |
-
LOG_FORMAT
–
The format string used for log messages
-
log_level
(LogLevelName )
–
The application-wide log level (cached from configuration)
|
Source code in src/core/logger.py
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 | class LoggerConfiguration:
"""Utility class for configuring application-wide logging.
This class provides methods to create consistently configured loggers,
manage log levels, and control the behavior of third-party loggers.
It uses the log level settings from MetadataConfiguration by default.
Attributes:
LOG_FORMAT: The format string used for log messages
log_level: The application-wide log level (cached from configuration)
"""
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
log_level: LogLevelName = None
@classmethod
def get_logger(
cls, name: str, log_level: LogLevelName = None, propagate: bool = False
) -> logging.Logger:
"""Create a logger with specified configuration.
Args:
name: Name for the logger (typically __name__)
log_level: Logging level
propagate: Whether to propagate to parent loggers
Returns:
logging.Logger: Configured logger instance
"""
if not log_level:
log_level = cls.get_log_level()
logger = logging.getLogger(name)
logger.setLevel(cls.log_level.value_as_int)
logger.propagate = propagate
if not logger.handlers:
formatter = logging.Formatter(cls.LOG_FORMAT)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
@classmethod
def get_log_level(cls) -> LogLevelName:
"""Get the log level for the logger.
Returns:
LogLevelName: The log level for the logger
"""
if not cls.log_level:
metadata = MetadataConfiguration()
cls.log_level = metadata.log_level
return cls.log_level
@staticmethod
def mute_logs():
"""Suppress verbose logs from third-party libraries.
Sets appropriate log levels for various libraries to reduce log noise:
- Sets 'httpx' to WARNING level
- Sets 'pdfminer' to ERROR level
"""
# Warning logs
logging.getLogger("httpx").setLevel(logging.WARNING)
# Error logs
logging.getLogger("pdfminer").setLevel(logging.ERROR)
|
get_log_level()
classmethod
Get the log level for the logger.
Returns: |
-
LogLevelName ( LogLevelName
) –
The log level for the logger
|
Source code in src/core/logger.py
52
53
54
55
56
57
58
59
60
61
62 | @classmethod
def get_log_level(cls) -> LogLevelName:
"""Get the log level for the logger.
Returns:
LogLevelName: The log level for the logger
"""
if not cls.log_level:
metadata = MetadataConfiguration()
cls.log_level = metadata.log_level
return cls.log_level
|
get_logger(name, log_level=None, propagate=False)
classmethod
Create a logger with specified configuration.
Parameters: |
-
name
(str )
–
Name for the logger (typically name)
-
log_level
(LogLevelName , default:
None
)
–
-
propagate
(bool , default:
False
)
–
Whether to propagate to parent loggers
|
Returns: |
-
Logger
–
logging.Logger: Configured logger instance
|
Source code in src/core/logger.py
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | @classmethod
def get_logger(
cls, name: str, log_level: LogLevelName = None, propagate: bool = False
) -> logging.Logger:
"""Create a logger with specified configuration.
Args:
name: Name for the logger (typically __name__)
log_level: Logging level
propagate: Whether to propagate to parent loggers
Returns:
logging.Logger: Configured logger instance
"""
if not log_level:
log_level = cls.get_log_level()
logger = logging.getLogger(name)
logger.setLevel(cls.log_level.value_as_int)
logger.propagate = propagate
if not logger.handlers:
formatter = logging.Formatter(cls.LOG_FORMAT)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
|
mute_logs()
staticmethod
Suppress verbose logs from third-party libraries.
Sets appropriate log levels for various libraries to reduce log noise:
- Sets 'httpx' to WARNING level
- Sets 'pdfminer' to ERROR level
Source code in src/core/logger.py
64
65
66
67
68
69
70
71
72
73
74
75
76 | @staticmethod
def mute_logs():
"""Suppress verbose logs from third-party libraries.
Sets appropriate log levels for various libraries to reduce log noise:
- Sets 'httpx' to WARNING level
- Sets 'pdfminer' to ERROR level
"""
# Warning logs
logging.getLogger("httpx").setLevel(logging.WARNING)
# Error logs
logging.getLogger("pdfminer").setLevel(logging.ERROR)
|