aidevelopementtoolkit.logging_utils.logger

get_formatted_logger(name: Optional[str] = 'Main', level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO') -> logging.Logger

This function returns a logger instance with the specified name and the given loglevel.

Parameters:
  • name (Optional[str], default: "Main" ) –

    Name of the logger. When None is provided, the root logger is returned.

  • level (Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], default: "INFO" ) –

    Level to which the logger will be initialized. This level is ignored if the logger already exists and has a level set.

Returns:
  • Logger

    A logger instance.

Examples:

>>> logger = get_formatted_logger(name="test_logger", level="DEBUG")
>>> logger.info("Model training completed!")
Source code in aidevelopementtoolkit/logging_utils/logger.py
 4
 5
 6
 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
def get_formatted_logger(
        name: Optional[str] = "Main", 
        level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = "INFO",
    ) -> logging.Logger:
    """This function returns a logger instance with the specified name and the
    given loglevel.

    Parameters
    ----------
    name : Optional[str], default="Main"
        Name of the logger. When `None` is provided, the root logger is returned.

    level : Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], default="INFO"
        Level to which the logger will be initialized. **This level is ignored 
        if the logger already exists and has a level set**.

    Returns
    -------
    logging.Logger
        A logger instance.

    Examples
    --------
    >>> logger = get_formatted_logger(name="test_logger", level="DEBUG")
    >>> logger.info("Model training completed!")
    """

    # Set logger
    logger = logging.getLogger(name)

    # If the logger already has handlers, we don't want to add another one.
    if logger.hasHandlers():
        return logger

    handler = logging.StreamHandler()

    # Set formatter
    formatter = ColorFormatter(
        "%(name)s %(asctime)s %(levelname)s %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S"
    )
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    # Set log level
    logger.setLevel(getattr(logging, level))

    return logger