#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
LogBoard+ - Конфигурация логгера
Автор: Сергей Антропов
Сайт: https://devops.org.ru
"""

import logging
import sys
from typing import Optional

import os
from core.config import DEBUG_MODE

def setup_logger(name: str = "logboard", level: Optional[str] = None) -> logging.Logger:
    """
    Настраивает и возвращает логгер для приложения
    
    Args:
        name: Имя логгера
        level: Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
    
    Returns:
        Настроенный логгер
    """
    # Определяем уровень логирования
    if level is None:
        level = os.getenv("LOG_LEVEL", "DEBUG" if DEBUG_MODE else "INFO")
    
    # Создаем логгер
    logger = logging.getLogger(name)
    logger.setLevel(getattr(logging, level.upper()))
    
    # Очищаем существующие обработчики
    logger.handlers.clear()
    
    # Создаем форматтер
    formatter = logging.Formatter(
        fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    
    # Создаем обработчик для консоли
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(getattr(logging, level.upper()))
    console_handler.setFormatter(formatter)
    
    # Добавляем обработчик к логгеру
    logger.addHandler(console_handler)
    
    # Предотвращаем дублирование логов
    logger.propagate = False
    
    return logger

# Создаем основной логгер приложения
app_logger = setup_logger("logboard")

# Создаем специализированные логгеры
auth_logger = setup_logger("logboard.auth")
docker_logger = setup_logger("logboard.docker")
api_logger = setup_logger("logboard.api")
websocket_logger = setup_logger("logboard.websocket")
