Spaces:
Build error
Build error
| """ | |
| Sistema de logging centralizado. | |
| Este m贸dulo proporciona una funci贸n para crear loggers consistentes | |
| en toda la aplicaci贸n, cumpliendo con SRP. | |
| """ | |
| import logging | |
| import sys | |
| from typing import Optional | |
| from app.infrastructure.config.settings import settings | |
| def setup_logger( | |
| name: str, | |
| level: Optional[str] = None, | |
| format_string: Optional[str] = None | |
| ) -> logging.Logger: | |
| """ | |
| Configura y retorna un logger con formato consistente. | |
| Args: | |
| name: Nombre del logger (t铆picamente __name__ del m贸dulo) | |
| level: Nivel de logging (DEBUG, INFO, WARNING, ERROR, CRITICAL) | |
| Si es None, usa el nivel de settings | |
| format_string: Formato personalizado del log | |
| Si es None, usa el formato de settings | |
| Returns: | |
| logging.Logger: Logger configurado | |
| Example: | |
| >>> from app.utils.logger import setup_logger | |
| >>> logger = setup_logger(__name__) | |
| >>> logger.info("Aplicaci贸n iniciada") | |
| """ | |
| logger = logging.getLogger(name) | |
| # Configurar nivel | |
| log_level = level or settings.log_level | |
| logger.setLevel(getattr(logging, log_level.upper())) | |
| # Evitar duplicar handlers | |
| if not logger.handlers: | |
| # Handler para stdout | |
| handler = logging.StreamHandler(sys.stdout) | |
| handler.setLevel(getattr(logging, log_level.upper())) | |
| # Formato | |
| log_format = format_string or settings.log_format | |
| formatter = logging.Formatter(log_format) | |
| handler.setFormatter(formatter) | |
| logger.addHandler(handler) | |
| # No propagar a logger ra铆z para evitar duplicados | |
| logger.propagate = False | |
| return logger | |
| # Logger por defecto para el m贸dulo | |
| logger = setup_logger(__name__) | |