File size: 928 Bytes
c8e875f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
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
"""
Logger setup utilities.
"""
import logging

def setup_logger(name: str = __name__) -> logging.Logger:
    """
    Set up logger based on the module name. Ensures:
    - No duplicate handlers are added.
    - Propagation to the root logger is disabled.
    - A standard formatter is applied.
    """
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    # Remove all old handlers if they exist (prevents duplicate logs on reload)
    if logger.hasHandlers():
        logger.handlers.clear()

    # Turn off propagation to the root logger
    logger.propagate = False

    # Create console handler
    console_handler = logging.StreamHandler()
    formatter       = logging.Formatter(
        fmt     = "[%(levelname)s]\t%(name)s\t%(funcName)s\t%(message)s",
        datefmt = "%Y-%m-%d %H:%M:%S"
    )
    console_handler.setFormatter(formatter)

    logger.addHandler(console_handler)
    return logger