""" src/utils/logger.py Centralised logging setup for Finnie. Usage: from src.utils.logger import get_logger log = get_logger(__name__) log.info("something happened") Logs appear in the terminal where `uv run streamlit run` was launched. Set LOG_LEVEL=DEBUG in .env for verbose output. """ import logging import os import sys def get_logger(name: str) -> logging.Logger: """Return a logger for the given module name.""" logger = logging.getLogger(name) if logger.handlers: return logger # already configured level = os.getenv("LOG_LEVEL", "INFO").upper() logger.setLevel(getattr(logging, level, logging.INFO)) handler = logging.StreamHandler(sys.stdout) handler.setFormatter( logging.Formatter( fmt="%(asctime)s %(levelname)-8s %(name)s %(message)s", datefmt="%H:%M:%S", ) ) logger.addHandler(handler) logger.propagate = False return logger