""" Logging configuration for the application. """ import logging import sys from typing import Optional from app.core.config import settings def setup_logging(level: Optional[str] = None) -> logging.Logger: """ Set up application logging. Args: level: Log level string (DEBUG, INFO, WARNING, ERROR, CRITICAL) Returns: Configured logger instance """ log_level = level or settings.LOG_LEVEL # Create formatter formatter = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) # Configure root logger root_logger = logging.getLogger() root_logger.setLevel(getattr(logging, log_level.upper(), logging.INFO)) # Remove existing handlers for handler in root_logger.handlers[:]: root_logger.removeHandler(handler) # Add stdout handler stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler.setFormatter(formatter) root_logger.addHandler(stdout_handler) # Set third-party loggers to WARNING to reduce noise logging.getLogger("uvicorn").setLevel(logging.WARNING) logging.getLogger("httpx").setLevel(logging.WARNING) logging.getLogger("huggingface_hub").setLevel(logging.WARNING) return root_logger def get_logger(name: str) -> logging.Logger: """ Get a named logger instance. Args: name: Logger name (typically __name__) Returns: Logger instance """ return logging.getLogger(name)