Proyecto de prueba de concepto para testing de logging en Python con múltiples módulos y configuración mediante variables de entorno.
Este proyecto simula dos módulos independientes (A y B) con diferentes niveles de logging que pueden ser configurados dinámicamente mediante variables de entorno. Es útil para aprender y probar diferentes configuraciones de logging sin modificar código.
Logging_tests_PoC/
├── main.py # Script principal con configuración de logging
├── module_a.py # Módulo A con operaciones de ejemplo
├── module_b.py # Módulo B con operaciones de ejemplo
├── .env # Variables de entorno (configuración)
├── requirements.txt # Dependencias Python
└── README.md # Este archivo
-
Clonar o descargar el proyecto
-
Instalar dependencias:
pip install -r requirements.txt
La configuración se realiza mediante el archivo .env. Existen dos tipos de configuración:
Define el nivel de logging por defecto para todos los módulos:
GLOBAL_LOG_LEVEL=INFOPuedes configurar cada módulo de forma independiente:
MODULE_A_LOG_LEVEL=DEBUG
MODULE_B_LOG_LEVEL=ERROR| Nivel | Descripción |
|---|---|
DEBUG |
Información detallada para diagnóstico |
INFO |
Confirmación de que las cosas funcionan como se espera |
WARNING |
Indicación de algo inesperado o un problema futuro |
ERROR |
Error más serio, el software no ha podido realizar una función |
CRITICAL |
Error muy grave, el programa puede no continuar ejecutándose |
Edita el archivo .env:
GLOBAL_LOG_LEVEL=DEBUG
MODULE_A_LOG_LEVEL=DEBUG
MODULE_B_LOG_LEVEL=DEBUGEjecuta:
python main.pyGLOBAL_LOG_LEVEL=CRITICAL
MODULE_A_LOG_LEVEL=INFO
MODULE_B_LOG_LEVEL=CRITICALGLOBAL_LOG_LEVEL=INFO
MODULE_A_LOG_LEVEL=DEBUG
MODULE_B_LOG_LEVEL=ERRORGLOBAL_LOG_LEVEL=WARNING
# No definir MODULE_A_LOG_LEVEL ni MODULE_B_LOG_LEVEL- ✅ Configuración simple mediante variables de entorno
- ✅ Nivel global y niveles específicos por módulo
- ✅ Salida formateada con timestamp y nivel
- ✅ Solo ~25 líneas de configuración
- ✅ Sin dependencias circulares
Es muy simple:
- main.py carga el archivo
.envconpython-dotenv - Configura el nivel global con
logging.basicConfig() - Configura cada módulo con
logging.getLogger().setLevel() - Los módulos usan
logging.getLogger(__name__)normalmente