locate-the-news / backend / app / utils / logger.py
logger.py
Raw
import logging
import sys

def setup_logger(name: str) -> logging.Logger:
    """
    Sets up a standardized logger for application modules.

    Args:
        name: The name of the logger (usually __name__ of the module).

    Returns:
        A configured logging.Logger instance.
    """
    # Create logger
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)  # Default level to INFO

    # Prevent logs from propagating to the root logger if already configured
    if not logger.handlers:
        # Create formatter
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        )

        # Create console handler
        ch = logging.StreamHandler(sys.stdout)
        ch.setLevel(logging.INFO)
        ch.setFormatter(formatter)

        # Add handler to logger
        logger.addHandler(ch)

    return logger

# Example usage (not run, just for reference):
# logger = setup_logger(__name__)
# logger.info("Logger initialized successfully.")