import logging
import sys


def setup_logger(name: str = "AI_Strategy", level: int = logging.INFO) -> logging.Logger:
    """Настраивает и возвращает логгер с единым форматом.

    Args:
        name: Имя логгера (по умолчанию "AI_Strategy")
        level: Уровень логирования (по умолчанию logging.INFO)

    Returns:
        Настроенный логгер

    Example:
        >>> logger = setup_logger("MyModule", level=logging.DEBUG)
        >>> logger.info("Training started")
        >>> logger.warning("Low memory available")
    """
    logger = logging.getLogger(name)

    # Избегаем дублирования хендлеров
    if logger.handlers:
        return logger

    logger.setLevel(level)

    handler = logging.StreamHandler(sys.stdout)
    formatter = logging.Formatter(
        '%(asctime)s | %(levelname)-7s | %(name)s | %(message)s',
        datefmt='%H:%M:%S'
    )
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    return logger


# Глобальный логгер для использования во всех модулях
logger = setup_logger()
