"""Logging configuration for the application."""

import logging
import logging.config
import os
from typing import Dict, Any

def get_logging_config() -> Dict[str, Any]:
    """Get logging configuration."""
    log_level = os.getenv("LOG_LEVEL", "INFO")
    
    return {
        "version": 1,
        "disable_existing_loggers": False,
        "formatters": {
            "standard": {
                "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
            },
            "detailed": {
                "format": "%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(funcName)s - %(lineno)d - %(message)s"
            }
        },
        "handlers": {
            "console": {
                "class": "logging.StreamHandler",
                "level": log_level,
                "formatter": "standard",
                "stream": "ext://sys.stdout"
            },
            "file": {
                "class": "logging.FileHandler",
                "level": log_level,
                "formatter": "detailed",
                "filename": "/app/logs/app.log",
                "mode": "a"
            }
        },
        "loggers": {
            "": {
                "handlers": ["console"],
                "level": log_level,
                "propagate": False
            },
            "src": {
                "handlers": ["console", "file"],
                "level": log_level,
                "propagate": False
            }
        }
    }


def setup_logging():
    """Set up logging configuration."""
    # Create logs directory if it doesn't exist
    os.makedirs("/app/logs", exist_ok=True)
    
    config = get_logging_config()
    logging.config.dictConfig(config)
    
    # Test logging
    logger = logging.getLogger(__name__)
    logger.info("Logging configured successfully")
