""" Logging configuration for the AI chatbot backend. This module sets up structured logging with appropriate levels and formats for production use. """ import logging import sys from typing import Optional import os def setup_logging( level: Optional[str] = None, log_file: Optional[str] = None ) -> None: """ Configure structured logging for the application. Args: level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) log_file: Optional file path for log output """ # Get log level from environment or parameter log_level_str = level or os.getenv("LOG_LEVEL", "INFO") log_level = getattr(logging, log_level_str.upper(), logging.INFO) # Create formatter formatter = logging.Formatter( fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Configure root logger root_logger = logging.getLogger() root_logger.setLevel(log_level) # Remove existing handlers root_logger.handlers.clear() # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(log_level) console_handler.setFormatter(formatter) root_logger.addHandler(console_handler) # File handler (if specified) if log_file: file_handler = logging.FileHandler(log_file) file_handler.setLevel(log_level) file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) # Set specific logger levels logging.getLogger("uvicorn").setLevel(logging.INFO) logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING) logging.info(f"Logging configured at {log_level_str} level") # Auto-configure logging on import setup_logging()