"""
Configuración del sistema de logging para el Sistema de Lectura Automática de Medidores.

Este módulo configura el sistema de logging con formato colorido para mejorar la legibilidad
de los mensajes de log en la consola.

Desarrolladores:
- Para modificar los formatos de log, ajuste la clase ColoredFormatter
- Para cambiar los niveles de log, modifique la función setup_logging()
"""

import logging
from colorama import Fore, Back, Style

class ColoredFormatter(logging.Formatter):
    """
    Formateador personalizado para colorear los mensajes de log.
    """
    FORMATS = {
        logging.DEBUG: Fore.CYAN + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + Style.RESET_ALL,
        logging.INFO: Fore.GREEN + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + Style.RESET_ALL,
        logging.WARNING: Fore.YELLOW + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + Style.RESET_ALL,
        logging.ERROR: Fore.RED + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + Style.RESET_ALL,
        logging.CRITICAL: Fore.RED + Back.WHITE + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + Style.RESET_ALL
    }

    def format(self, record):
        log_fmt = self.FORMATS.get(record.levelno)
        formatter = logging.Formatter(log_fmt)
        return formatter.format(record)

def setup_logging():
    """
    Configura el sistema de logging con formato colorido.
    """
    handler = logging.StreamHandler()
    handler.setFormatter(ColoredFormatter())
    logging.basicConfig(level=logging.INFO, handlers=[handler])

    # Ejemplo de cómo configurar loggers específicos si es necesario
    # logging.getLogger('nombre_del_modulo').setLevel(logging.DEBUG)
