# app/core/logging.py """Summary description .... This module provides classes and functions for: - .... - .... - .... """ import logging import sys from pathlib import Path from app.core.config import settings def setup_logging(): """Configure application logging with file and console handlers.""" # Create logs directory if it doesn't exist log_file = Path(settings.log_file) log_file.parent.mkdir(parents=True, exist_ok=True) # Configure root logger logger = logging.getLogger() logger.setLevel(getattr(logging, settings.log_level.upper())) # Remove existing handlers for handler in logger.handlers[:]: logger.removeHandler(handler) # Create formatters formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # File handler file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # Configure specific loggers logging.getLogger("uvicorn.access").setLevel(logging.WARNING) logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING) return logging.getLogger(__name__)