pip install chromologger
Visite chromologger para más documentación
Descarga nuestro nuevo proyecto:
pip install bridgex
"Chromologger" es un módulo avanzado de logging diseñado para facilitar la creación de registros (logs) profesionales en aplicaciones desarrolladas con Python. Proporciona una solución completa y fácil de usar para documentar eventos, excepciones y actividades del sistema, mejorando significativamente la capacidad de monitoreo, debugging y mantenimiento del código.
- Logging automático con timestamps precisos - Cada registro incluye fecha y hora con microsegundos
- Manejo inteligente de excepciones - Traceback completo con archivo, línea y descripción
- Archivos de log organizados - Soporte para múltiples niveles (INFO, ERROR, etc.)
- Integración con chromolog - Salida colorizada en consola para mejor visualización
- Gestión automática de rutas - Detección inteligente del directorio del script llamador
- Sistema de logging interno - Debug y mantenimiento del propio módulo
- API simple e intuitiva - Fácil implementación en cualquier proyecto
# Instalar chromologger
pip install chromologger
# Instalar dependencia (si no se instala automáticamente)
pip install chromolog==0.2.5
from chromologger import Logger
# Crear logger (archivo por defecto: log.log en directorio del script)
logger = Logger()
# Registrar mensaje informativo
logger.log('Aplicación iniciada correctamente')
# Registrar excepción
try:
resultado = 10 / 0
except Exception as e:
logger.log_e(e)
# Cerrar logger (liberar recursos)
logger.close()
from chromologger import Logger
import os
# Crear directorio si no existe
os.makedirs('./logs', exist_ok=True)
# Logger con archivo personalizado
app_logger = Logger('./logs/mi_aplicacion.log')
# Registrar diferentes tipos de eventos
app_logger.log('Sistema iniciado')
app_logger.log({'evento': 'login', 'usuario': 'admin'})
app_logger.log(f'Procesados 150 elementos')
# Manejo de errores
try:
with open('archivo_inexistente.txt', 'r') as f:
contenido = f.read()
except FileNotFoundError as e:
app_logger.log_e(e) # Registra traceback completo
app_logger.close()
Los registros se almacenan con formato estructurado y timestamps precisos:
Mensaje informativo:
[INFO][2025-01-06 19:52:08.636560] - Aplicación iniciada correctamente
Registro de excepción:
[ERROR][2025-01-06 19:52:08.636560] - Exception: FileNotFoundError - File: c:\Users\app\main.py - ErrorLine: 35 - Message: [Errno 2] No such file or directory: './data/config.json'
Logger(log_file_name: str = 'log.log')
- log_file_name (str, opcional): Nombre o ruta del archivo de log
- Si es
'log.log'
: Se crea en el directorio del script llamador - Si es otra ruta: Se respeta la ubicación especificada
- Si es
Registra mensajes informativos generales con nivel INFO y timestamp automático.
- Parámetros:
msg
- Mensaje a registrar (acepta cualquier tipo de dato) - Características: Conversión automática a string, timestamp con microsegundos
Registra excepciones con información detallada de traceback.
- Parámetros:
e
- Instancia de Exception o subclases - Información incluida: Tipo de excepción, archivo, línea, mensaje completo
Cierra el archivo de log y libera recursos del sistema.
- Retorna:
True
si se cerró exitosamente,False
en caso contrario
from chromologger import Logger
from datetime import datetime
import os
# Configurar logging por fecha
log_dir = './logs'
os.makedirs(log_dir, exist_ok=True)
app_logger = Logger(f'{log_dir}/app_{datetime.now().strftime("%Y%m%d")}.log')
class WebApplication:
def __init__(self):
app_logger.log('Inicializando aplicación web')
def handle_request(self, user_id, endpoint):
try:
app_logger.log(f'Usuario {user_id} accediendo a {endpoint}')
# ... lógica de procesamiento ...
app_logger.log(f'Request procesado exitosamente para {user_id}')
except Exception as e:
app_logger.log_e(e)
app_logger.log(f'Error procesando request de usuario {user_id}')
def shutdown(self):
app_logger.log('Cerrando aplicación web')
app_logger.close()
from chromologger import Logger
# Diferentes loggers para diferentes propósitos
access_logger = Logger('./logs/access.log')
error_logger = Logger('./logs/errors.log')
performance_logger = Logger('./logs/performance.log')
def monitor_system():
try:
access_logger.log('Sistema de monitoreo iniciado')
# ... trabajo del sistema ...
performance_logger.log('Operación completada en 2.5 segundos')
except Exception as e:
error_logger.log_e(e)
finally:
# Cerrar todos los loggers
for logger in [access_logger, error_logger, performance_logger]:
logger.close()
- Precisión: Microsegundos para debugging detallado
- Formato:
YYYY-MM-DD HH:MM:SS.microseconds
- [INFO] - Mensajes informativos generales
- [ERROR] - Excepciones y errores del sistema
- Futuros: WARNING, DEBUG, CRITICAL
- Detección automática: Identifica el directorio del script llamador
- Rutas relativas: Soporte completo para
./logs/app.log
- Rutas absolutas: Compatible con rutas completas del sistema
- Creación automática: El archivo se crea si no existe
1. FileNotFoundError al crear el logger
# ❌ Error: directorio no existe
logger = Logger('./logs_inexistentes/app.log')
# ✅ Solución: crear directorio primero
import os
os.makedirs('./logs', exist_ok=True)
logger = Logger('./logs/app.log')
2. Verificar inicialización correcta
logger = Logger()
if hasattr(logger, 'file') and logger.file != -1:
logger.log('Logger funcionando correctamente')
else:
print('Error: Logger no se inicializó correctamente')
from datetime import datetime
# Por fecha
date_str = datetime.now().strftime("%Y%m%d")
logger = Logger(f'./logs/app_{date_str}.log')
# Por funcionalidad
auth_logger = Logger('./logs/authentication.log')
db_logger = Logger('./logs/database.log')
api_logger = Logger('./logs/api_requests.log')
# Patrón recomendado
def process_data():
logger = Logger('data_processing.log')
try:
logger.log('Iniciando procesamiento')
# ... procesamiento ...
logger.log('Procesamiento completado')
except Exception as e:
logger.log_e(e)
finally:
logger.close()
# ✅ Usar log() para eventos normales
logger.log('Usuario autenticado exitosamente')
logger.log('Base de datos conectada')
logger.log('Archivo procesado: 150 registros')
# ✅ Usar log_e() solo para excepciones
try:
# operación riesgosa
pass
except Exception as e:
logger.log_e(e) # Información completa de traceback
- 🔄 Soporte para múltiples niveles de log (WARNING, DEBUG, CRITICAL)
- 🔄 Context managers (with statement)
- 🔄 Rotación automática de archivos por tamaño/fecha
- 🔄 Configuración de formato personalizada
- 🔄 Filtros de log por nivel
- 🔄 Exportación a JSON/CSV
- Documentación Completa - Guía completa con ejemplos avanzados
- PyPI Package - Información del paquete y versiones
- GitHub Repository - Código fuente y contribuciones
- Changelog - Historial de versiones y cambios
¡Las contribuciones son bienvenidas! Si encuentras algún problema o tienes sugerencias:
- Crea un Issue para reportar bugs
- Envía un Pull Request con mejoras
- Comparte feedback en las Discussions
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Desarrollado por Tutos Rive con ❤️ para la comunidad Python.
¿Te gusta chromologger? ⭐ ¡Dale una estrella en GitHub y compártelo!
Nuevo proyecto: Descarga
bridgex
- Nuestro último proyecto para desarrollo avanzado