# src/tracking/logger.py — Structured logging setup from __future__ import annotations import logging import sys from pathlib import Path from typing import Optional from src.config import LoggingConfig def setup_logging(cfg: LoggingConfig) -> logging.Logger: logger = logging.getLogger("uvmgen") logger.setLevel(getattr(logging, cfg.level.upper(), logging.INFO)) if not logger.handlers: console = logging.StreamHandler(sys.stdout) console.setLevel(getattr(logging, cfg.level.upper(), logging.INFO)) console.setFormatter(logging.Formatter(cfg.format)) logger.addHandler(console) if cfg.file: log_path = Path(cfg.file) log_path.parent.mkdir(parents=True, exist_ok=True) fh = logging.FileHandler(str(log_path)) fh.setLevel(logging.DEBUG) fh.setFormatter(logging.Formatter(cfg.format)) logger.addHandler(fh) return logger