""" Logging configuration for NeuroSAM 3 application. Provides centralized logging setup with proper formatting and levels. """ import logging import sys from typing import Optional from config import LOG_LEVEL, LOG_FORMAT, LOG_FILE def setup_logger(name: str = "NeuroSAM3", level: Optional[str] = None) -> logging.Logger: """ Set up and configure the application logger. Args: name: Logger name (default: "NeuroSAM3") level: Log level (default: from config) Returns: Configured logger instance """ logger = logging.getLogger(name) # Avoid adding handlers multiple times if logger.handlers: return logger # Set log level log_level = level or LOG_LEVEL logger.setLevel(getattr(logging, log_level.upper(), logging.INFO)) # Create formatter formatter = logging.Formatter(LOG_FORMAT) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.DEBUG) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # File handler (if configured) if LOG_FILE: try: file_handler = logging.FileHandler(LOG_FILE) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) except Exception as e: logger.warning(f"Could not set up file logging: {e}") return logger # Create default logger instance logger = setup_logger()