utils.logger

 1import logging
 2from logging import Logger
 3
 4from config.settings import LOG_DIR, LOG_TO_CONSOLE
 5
 6LOG_FORMAT: str = "%(asctime)s - %(levelname)s - %(message)s"
 7formatter = logging.Formatter(LOG_FORMAT)
 8
 9
10def setup_logger(name: str, level: int, filename: str) -> Logger:
11    """
12    Create and configure a logger with file and optional console output.
13
14    :param name: Name of the logger.
15    :param level: Logging level (e.g., logging.INFO, logging.ERROR).
16    :param filename: Name of the log file where logs will be saved.
17    :return: Configured Logger instance.
18    """
19    logger = logging.getLogger(name)
20    logger.setLevel(level)
21    logger.propagate = False  # Prevent double logging if root logger is configured
22
23    file_handler = logging.FileHandler(LOG_DIR / filename)
24    file_handler.setFormatter(formatter)
25    logger.addHandler(file_handler)
26
27    if LOG_TO_CONSOLE:
28        stream_handler = logging.StreamHandler()
29        stream_handler.setFormatter(formatter)
30        logger.addHandler(stream_handler)
31
32    return logger
33
34
35info_logger: Logger = setup_logger("info_logger", logging.INFO, "info.log")
36error_logger: Logger = setup_logger("error_logger", logging.ERROR, "error.log")
LOG_FORMAT: str = '%(asctime)s - %(levelname)s - %(message)s'
formatter = <logging.Formatter object>
def setup_logger(name: str, level: int, filename: str) -> logging.Logger:
11def setup_logger(name: str, level: int, filename: str) -> Logger:
12    """
13    Create and configure a logger with file and optional console output.
14
15    :param name: Name of the logger.
16    :param level: Logging level (e.g., logging.INFO, logging.ERROR).
17    :param filename: Name of the log file where logs will be saved.
18    :return: Configured Logger instance.
19    """
20    logger = logging.getLogger(name)
21    logger.setLevel(level)
22    logger.propagate = False  # Prevent double logging if root logger is configured
23
24    file_handler = logging.FileHandler(LOG_DIR / filename)
25    file_handler.setFormatter(formatter)
26    logger.addHandler(file_handler)
27
28    if LOG_TO_CONSOLE:
29        stream_handler = logging.StreamHandler()
30        stream_handler.setFormatter(formatter)
31        logger.addHandler(stream_handler)
32
33    return logger

Create and configure a logger with file and optional console output.

Parameters
  • name: Name of the logger.
  • level: Logging level (e.g., logging.INFO, logging.ERROR).
  • filename: Name of the log file where logs will be saved.
Returns

Configured Logger instance.

info_logger: logging.Logger = <Logger info_logger (INFO)>
error_logger: logging.Logger = <Logger error_logger (ERROR)>