"""
Logging Configuration Module
Sets up rotating file logging for Python processors
"""

import logging
import logging.handlers
import os
from typing import Optional

def setup_logger(name: str, log_file: str = '/var/log/coastal_command_gps.log') -> logging.Logger:
    """
    Set up a rotating file logger

    Args:
        name: Logger name (typically __name__ or module name)
        log_file: Path to log file

    Returns:
        Configured logger instance
    """
    # Create logger
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    # Remove existing handlers to avoid duplicates
    logger.handlers.clear()

    # Create rotating file handler (10MB max, keep 5 backups)
    try:
        handler = logging.handlers.RotatingFileHandler(
            log_file,
            maxBytes=10485760,  # 10MB
            backupCount=5
        )
    except (IOError, OSError) as e:
        print(f"Warning: Could not create file handler for {log_file}: {e}")
        # Fallback to console handler
        handler = logging.StreamHandler()

    # Create formatter
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    handler.setFormatter(formatter)

    # Add handler to logger
    logger.addHandler(handler)

    return logger


def get_logger(name: str, log_file: Optional[str] = None) -> logging.Logger:
    """
    Get or create a logger with standard configuration

    Args:
        name: Logger name
        log_file: Optional custom log file path

    Returns:
        Logger instance
    """
    if log_file is None:
        # Use default log file naming convention
        script_name = name.split('.')[-1]
        log_file = f'/var/log/{script_name}.log'

    return setup_logger(name, log_file)
