Skip to content

oxytcmri.infrastructure.logger

Logging configuration module for the package.

Classes:

Name Description
Logger

Logger class for configuring logging settings.

Logger(settings)

Logger class for configuring logging settings.

This class sets up logging configuration based on the provided settings.

Attributes:

Name Type Description
log_level str

The logging level.

save_to_file bool

Whether to save logs to a file.

log_to_console bool

Whether to log to console.

Initialize the logger with the given settings.

Parameters:

Name Type Description Default
settings Settings

The settings object containing logging configuration.

required

Methods:

Name Description
get_log_level
get_save_to_file
get_log_to_console
setup

Set up logging configuration for the package.

Source code in oxytcmri/infrastructure/logger.py
27
28
29
30
31
32
33
34
35
36
37
38
39
def __init__(self, settings: Settings):
    """
    Initialize the logger with the given settings.

    Parameters
    ----------
    settings : Settings
        The settings object containing logging configuration.
    """
    self.settings = settings
    self.log_level = self.get_log_level()
    self.save_to_file = self.get_save_to_file()
    self.log_to_console = self.get_log_to_console()

settings = settings instance-attribute

log_level = self.get_log_level() instance-attribute

save_to_file = self.get_save_to_file() instance-attribute

log_to_console = self.get_log_to_console() instance-attribute

get_log_level()

Source code in oxytcmri/infrastructure/logger.py
41
42
43
44
45
def get_log_level(self) -> str:
    try:
        return self.settings.logs.log_level
    except AttributeError:
        return "INFO"

get_save_to_file()

Source code in oxytcmri/infrastructure/logger.py
47
48
49
50
51
def get_save_to_file(self) -> bool:
    try:
        return self.settings.logs.save_to_file
    except AttributeError:
        return False

get_log_to_console()

Source code in oxytcmri/infrastructure/logger.py
53
54
55
56
57
def get_log_to_console(self) -> bool:
    try:
        return self.settings.logs.log_to_console
    except AttributeError:
        return True

setup()

Set up logging configuration for the package.

Source code in oxytcmri/infrastructure/logger.py
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def setup(self):
    """
    Set up logging configuration for the package.
    """

    log_handlers = []
    if self.log_to_console:
        log_handlers.append(logging.StreamHandler(sys.stdout))

    if self.save_to_file:
        logs_folder = Path(__file__).parents[2] / "logs"
        if not logs_folder.exists():
            raise FileNotFoundError(f"Logs folder not found: '{logs_folder}'.")
        log_file = logs_folder / f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_oxytcmri.log"
        log_handlers.append(logging.FileHandler(log_file))
        if not self.log_to_console:
            print(f"To follow the logs in real-time, use the command: tail -f '{log_file}'")

    logging.basicConfig(
        level=self.log_level,
        format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
        handlers=log_handlers
    )