Skip to content

Repository files navigation

CHROMOLOGGER


Sponsor me on GitHubSponsor me on Ko-Fi

PyPI DownloadsPyPI - VersionPyPI - Python VersionStatic BadgeGitHub License
pip install chromologger

Check This:

image


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.

🚀 Características Principales

  • 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

📦 Instalación

# Instalar chromologger
pip install chromologger
# Instalar dependencia (si no se instala automáticamente) 
pip install chromolog==0.2.5

🔧 Uso Rápido

Uso Básico

fromchromologgerimportLogger# Crear logger (archivo por defecto: log.log en directorio del script)logger=Logger()
# Registrar mensaje informativologger.log('Aplicación iniciada correctamente')
# Registrar excepcióntry:
resultado=10/0exceptExceptionase:
logger.log_e(e)
# Cerrar logger (liberar recursos)logger.close()

Uso Avanzado

fromchromologgerimportLoggerimportos# Crear directorio si no existeos.makedirs('./logs', exist_ok=True)
# Logger con archivo personalizadoapp_logger=Logger('./logs/mi_aplicacion.log')
# Registrar diferentes tipos de eventosapp_logger.log('Sistema iniciado')
app_logger.log({'evento': 'login', 'usuario': 'admin'})
app_logger.log(f'Procesados 150 elementos')
# Manejo de errorestry:
withopen('archivo_inexistente.txt', 'r') asf:
contenido=f.read()
exceptFileNotFoundErrorase:
app_logger.log_e(e) # Registra traceback completoapp_logger.close()

📋 Formato de Registro

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'

🔧 API Documentación

Clase Logger

Constructor

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

Métodos Públicos

🗒️ log(msg: any) → None

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
⚠️ log_e(e: Exception) → None

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
🔒 close() → bool

Cierra el archivo de log y libera recursos del sistema.

  • Retorna: True si se cerró exitosamente, False en caso contrario

🔥 Ejemplos Avanzados

Aplicación Web con Logging Completo

fromchromologgerimportLoggerfromdatetimeimportdatetimeimportos# Configurar logging por fechalog_dir='./logs'os.makedirs(log_dir, exist_ok=True)
app_logger=Logger(f'{log_dir}/app_{datetime.now().strftime("%Y%m%d")}.log')
classWebApplication:
def__init__(self):
app_logger.log('Inicializando aplicación web')
defhandle_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}')
exceptExceptionase:
app_logger.log_e(e)
app_logger.log(f'Error procesando request de usuario {user_id}')
defshutdown(self):
app_logger.log('Cerrando aplicación web')
app_logger.close()

Sistema de Monitoreo con Múltiples Loggers

fromchromologgerimportLogger# Diferentes loggers para diferentes propósitosaccess_logger=Logger('./logs/access.log')
error_logger=Logger('./logs/errors.log')
performance_logger=Logger('./logs/performance.log')
defmonitor_system():
try:
access_logger.log('Sistema de monitoreo iniciado')
# ... trabajo del sistema ...performance_logger.log('Operación completada en 2.5 segundos')
exceptExceptionase:
error_logger.log_e(e)
finally:
# Cerrar todos los loggersforloggerin [access_logger, error_logger, performance_logger]:
logger.close()

⚙️ Características Técnicas

Formato de Timestamp

  • Precisión: Microsegundos para debugging detallado
  • Formato: YYYY-MM-DD HH:MM:SS.microseconds

Niveles de Log

  • [INFO] - Mensajes informativos generales
  • [ERROR] - Excepciones y errores del sistema
  • Futuros: WARNING, DEBUG, CRITICAL

Gestión de Rutas

  • 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

🔧 Solución de Problemas

Errores Comunes

1. FileNotFoundError al crear el logger

# ❌ Error: directorio no existelogger=Logger('./logs_inexistentes/app.log')
# ✅ Solución: crear directorio primeroimportosos.makedirs('./logs', exist_ok=True)
logger=Logger('./logs/app.log')

2. Verificar inicialización correcta

logger=Logger()
ifhasattr(logger, 'file') andlogger.file!=-1:
logger.log('Logger funcionando correctamente')
else:
print('Error: Logger no se inicializó correctamente')

✨ Mejores Prácticas

1. Organización de Logs

fromdatetimeimportdatetime# Por fechadate_str=datetime.now().strftime("%Y%m%d")
logger=Logger(f'./logs/app_{date_str}.log')
# Por funcionalidadauth_logger=Logger('./logs/authentication.log')
db_logger=Logger('./logs/database.log')
api_logger=Logger('./logs/api_requests.log')

2. Manejo de Recursos

# Patrón recomendadodefprocess_data():
logger=Logger('data_processing.log')
try:
logger.log('Iniciando procesamiento')
# ... procesamiento ...logger.log('Procesamiento completado')
exceptExceptionase:
logger.log_e(e)
finally:
logger.close()

3. Logging Informativo vs Errores

# ✅ Usar log() para eventos normaleslogger.log('Usuario autenticado exitosamente')
logger.log('Base de datos conectada')
logger.log('Archivo procesado: 150 registros')
# ✅ Usar log_e() solo para excepcionestry:
# operación riesgosapassexceptExceptionase:
logger.log_e(e) # Información completa de traceback

🚀 Próximas Características

  • 🔄 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

📚 Recursos y Documentación

🤝 Contribuir

¡Las contribuciones son bienvenidas! Si encuentras algún problema o tienes sugerencias:

  1. Crea un Issue para reportar bugs
  2. Envía un Pull Request con mejoras
  3. Comparte feedback en las Discussions

📄 Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

🙏 Agradecimientos

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

About

Chromologger is a module designed to facilitate the creation of logs in applications developed with Python. It provides a simple and structured way to document events, errors, and activities in programs, improving code monitoring and debugging capabilities.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Contributors

Languages