"""
utils/logger.py — Centralized logging configuration
====================================================
Use this everywhere instead of `print()`.

    from utils.logger import get_logger
    log = get_logger(__name__)
    log.info("starting up")
"""
from __future__ import annotations
import logging
import sys
from config import settings

_FMT = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
_DATE = "%Y-%m-%d %H:%M:%S"

_configured = False


def _configure_root() -> None:
    global _configured
    if _configured:
        return

    level = getattr(logging, settings.LOG_LEVEL, logging.INFO)

    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(logging.Formatter(_FMT, datefmt=_DATE))

    root = logging.getLogger()
    root.handlers.clear()
    root.addHandler(handler)
    root.setLevel(level)

    # Tame noisy libraries
    logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
    logging.getLogger("watchfiles").setLevel(logging.WARNING)

    _configured = True


def get_logger(name: str | None = None) -> logging.Logger:
    _configure_root()
    return logging.getLogger(name or "people_hub")
