{"id":25310170,"url":"https://github.com/Dev2Forge/chromologger","last_synced_at":"2025-10-28T14:32:11.365Z","repository":{"id":271477776,"uuid":"913532233","full_name":"tutosrivegamerLQ/chromologger","owner":"tutosrivegamerLQ","description":"\"Chromologger\" es un módulo diseñado para facilitar la creación de registros (logs) en aplicaciones desarrolladas con Python. Proporciona una manera sencilla y estructurada de documentar eventos, errores y actividades en los programas, mejorando la capacidad de monitoreo y depuración del código.","archived":false,"fork":false,"pushed_at":"2025-02-12T18:15:37.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-12T19:28:17.276Z","etag":null,"topics":["console","debbuger","debbuging","logger","logging","module","prgramming","python","python3","pythonmodule"],"latest_commit_sha":null,"homepage":"https://tutosrivegamerlq.github.io/chromologger/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tutosrivegamerLQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-07T21:39:49.000Z","updated_at":"2025-02-12T18:15:40.000Z","dependencies_parsed_at":"2025-01-08T03:17:31.340Z","dependency_job_id":"b094f567-cf02-470c-a120-3fb883c90dc8","html_url":"https://github.com/tutosrivegamerLQ/chromologger","commit_stats":null,"previous_names":["tutosrivegamerlq/chronolog","tutosrivegamerlq/easylog","tutosrivegamerlq/logon"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tutosrivegamerLQ%2Fchromologger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tutosrivegamerLQ%2Fchromologger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tutosrivegamerLQ%2Fchromologger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tutosrivegamerLQ%2Fchromologger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tutosrivegamerLQ","download_url":"https://codeload.github.com/tutosrivegamerLQ/chromologger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238537152,"owners_count":19488840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["console","debbuger","debbuging","logger","logging","module","prgramming","python","python3","pythonmodule"],"created_at":"2025-02-13T13:40:12.464Z","updated_at":"2025-10-28T14:32:11.352Z","avatar_url":"https://github.com/tutosrivegamerLQ.png","language":"Python","funding_links":["https://github.com/sponsors/tutosrive","https://ko-fi.com/D1D61GNZR1"],"categories":[],"sub_categories":[],"readme":"# CHROMOLOGGER\n\n---\n\n\u003cdiv align=\"center\" style=\"display: flex; align-items: center; justify-content: center; margin: 10px 0; gap: 10px; max-height: 48px; height: 48px;\"\u003e\n  \u003ca href=\"https://github.com/sponsors/tutosrive\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Sponsor-%F0%9F%92%96%20Dev2Forge-blue?style=for-the-badge\u0026logo=github\" alt=\"Sponsor me on GitHub\"\u003e\n\u003c/a\u003e\n  \u003ca href=\"https://ko-fi.com/D1D61GNZR1\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://ko-fi.com/img/githubbutton_sm.svg\" alt=\"Sponsor me on Ko-Fi\"\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003c!-- Badges --\u003e\n  \u003cdiv\u003e\n\u003c!-- Total downloads --\u003e\n    \u003ca href=\"https://pepy.tech/projects/chromologger\"\u003e\u003cimg src=\"https://static.pepy.tech/badge/chromologger\" alt=\"PyPI Downloads\"\u003e\u003c/a\u003e\n\u003c!-- Versión actual --\u003e\n    \u003ca href=\"https://pypi.org/project/chromologger/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/chromologger?label=chromologger\"\u003e\u003c/a\u003e\n\u003c!-- Python versions supported --\u003e\n    \u003ca href=\"https://python.org/\"\u003e\u003cimg alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/chromologger\"\u003e\u003c/a\u003e \n\u003c!-- Author --\u003e\n    \u003ca href=\"https://github.com/tutosrive\"\u003e\u003cimg alt=\"Static Badge\" src=\"https://img.shields.io/badge/Tutos%20Rive-Author-brightgreen\"\u003e\u003c/a\u003e\n\u003c!-- Licencia --\u003e\n    \u003ca href=\"https://raw.githubusercontent.com/tutosrive/chromologger/main/LICENSE\"\u003e\u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/tutosrive/chromologger\"\u003e\u003c/a\u003e\n  \u003c/div\u003e\n\n```shell\npip install chromologger\n```\n---\n\n\u003e ### Visite [chromologger](https://docs.dev2forge.software/chromologger/) para más documentación\n\n\u003e Descarga nuestro nuevo proyecto: [`pip install bridgex`](https://github.com/Dev2Forge/bridgex)\n\u003e \u003cdiv align=\"center\"\u003e\u003cimg src=\"https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/bridgex-v0.1.0.webp\" width=\"200\"\u003e\u003c/div\u003e\n\n\"**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.\n\n## 🚀 Características Principales\n\n- **Logging automático con timestamps precisos** - Cada registro incluye fecha y hora con microsegundos\n- **Manejo inteligente de excepciones** - Traceback completo con archivo, línea y descripción\n- **Archivos de log organizados** - Soporte para múltiples niveles (INFO, ERROR, etc.)\n- **Integración con chromolog** - Salida colorizada en consola para mejor visualización\n- **Gestión automática de rutas** - Detección inteligente del directorio del script llamador\n- **Sistema de logging interno** - Debug y mantenimiento del propio módulo\n- **API simple e intuitiva** - Fácil implementación en cualquier proyecto\n\n## 📦 Instalación\n\n```bash\n# Instalar chromologger\npip install chromologger\n\n# Instalar dependencia (si no se instala automáticamente)  \npip install chromolog==0.2.5\n```\n\n## 🔧 Uso Rápido\n\n### Uso Básico\n```python\nfrom chromologger import Logger\n\n# Crear logger (archivo por defecto: log.log en directorio del script)\nlogger = Logger()\n\n# Registrar mensaje informativo\nlogger.log('Aplicación iniciada correctamente')\n\n# Registrar excepción\ntry:\n    resultado = 10 / 0\nexcept Exception as e:\n    logger.log_e(e)\n\n# Cerrar logger (liberar recursos)\nlogger.close()\n```\n\n### Uso Avanzado\n```python\nfrom chromologger import Logger\nimport os\n\n# Crear directorio si no existe\nos.makedirs('./logs', exist_ok=True)\n\n# Logger con archivo personalizado\napp_logger = Logger('./logs/mi_aplicacion.log')\n\n# Registrar diferentes tipos de eventos\napp_logger.log('Sistema iniciado')\napp_logger.log({'evento': 'login', 'usuario': 'admin'})\napp_logger.log(f'Procesados 150 elementos')\n\n# Manejo de errores\ntry:\n    with open('archivo_inexistente.txt', 'r') as f:\n        contenido = f.read()\nexcept FileNotFoundError as e:\n    app_logger.log_e(e)  # Registra traceback completo\n\napp_logger.close()\n```\n\n## 📋 Formato de Registro\n\nLos registros se almacenan con formato estructurado y timestamps precisos:\n\n**Mensaje informativo:**\n```\n[INFO][2025-01-06 19:52:08.636560] - Aplicación iniciada correctamente\n```\n\n**Registro de excepción:**\n```\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'\n```\n\n## 🔧 API Documentación\n\n### Clase Logger\n\n#### Constructor\n```python\nLogger(log_file_name: str = 'log.log')\n```\n- **log_file_name** (str, opcional): Nombre o ruta del archivo de log\n  - Si es `'log.log'`: Se crea en el directorio del script llamador\n  - Si es otra ruta: Se respeta la ubicación especificada\n\n#### Métodos Públicos\n\n##### 🗒️ log(msg: any) → None\nRegistra mensajes informativos generales con nivel INFO y timestamp automático.\n\n- **Parámetros**: `msg` - Mensaje a registrar (acepta cualquier tipo de dato)\n- **Características**: Conversión automática a string, timestamp con microsegundos\n\n##### ⚠️ log_e(e: Exception) → None\nRegistra excepciones con información detallada de traceback.\n\n- **Parámetros**: `e` - Instancia de Exception o subclases\n- **Información incluida**: Tipo de excepción, archivo, línea, mensaje completo\n\n##### 🔒 close() → bool\nCierra el archivo de log y libera recursos del sistema.\n\n- **Retorna**: `True` si se cerró exitosamente, `False` en caso contrario\n\n## 🔥 Ejemplos Avanzados\n\n### Aplicación Web con Logging Completo\n```python\nfrom chromologger import Logger\nfrom datetime import datetime\nimport os\n\n# Configurar logging por fecha\nlog_dir = './logs'\nos.makedirs(log_dir, exist_ok=True)\napp_logger = Logger(f'{log_dir}/app_{datetime.now().strftime(\"%Y%m%d\")}.log')\n\nclass WebApplication:\n    def __init__(self):\n        app_logger.log('Inicializando aplicación web')\n    \n    def handle_request(self, user_id, endpoint):\n        try:\n            app_logger.log(f'Usuario {user_id} accediendo a {endpoint}')\n            # ... lógica de procesamiento ...\n            app_logger.log(f'Request procesado exitosamente para {user_id}')\n        except Exception as e:\n            app_logger.log_e(e)\n            app_logger.log(f'Error procesando request de usuario {user_id}')\n    \n    def shutdown(self):\n        app_logger.log('Cerrando aplicación web')\n        app_logger.close()\n```\n\n### Sistema de Monitoreo con Múltiples Loggers\n```python\nfrom chromologger import Logger\n\n# Diferentes loggers para diferentes propósitos\naccess_logger = Logger('./logs/access.log')\nerror_logger = Logger('./logs/errors.log')\nperformance_logger = Logger('./logs/performance.log')\n\ndef monitor_system():\n    try:\n        access_logger.log('Sistema de monitoreo iniciado')\n        # ... trabajo del sistema ...\n        performance_logger.log('Operación completada en 2.5 segundos')\n    except Exception as e:\n        error_logger.log_e(e)\n    finally:\n        # Cerrar todos los loggers\n        for logger in [access_logger, error_logger, performance_logger]:\n            logger.close()\n```\n\n## ⚙️ Características Técnicas\n\n### Formato de Timestamp\n- **Precisión**: Microsegundos para debugging detallado\n- **Formato**: `YYYY-MM-DD HH:MM:SS.microseconds`\n\n### Niveles de Log\n- **[INFO]** - Mensajes informativos generales\n- **[ERROR]** - Excepciones y errores del sistema\n- **Futuros**: WARNING, DEBUG, CRITICAL\n\n### Gestión de Rutas\n- **Detección automática**: Identifica el directorio del script llamador\n- **Rutas relativas**: Soporte completo para `./logs/app.log`\n- **Rutas absolutas**: Compatible con rutas completas del sistema\n- **Creación automática**: El archivo se crea si no existe\n\n## 🔧 Solución de Problemas\n\n### Errores Comunes\n\n**1. FileNotFoundError al crear el logger**\n```python\n# ❌ Error: directorio no existe\nlogger = Logger('./logs_inexistentes/app.log')\n\n# ✅ Solución: crear directorio primero\nimport os\nos.makedirs('./logs', exist_ok=True)\nlogger = Logger('./logs/app.log')\n```\n\n**2. Verificar inicialización correcta**\n```python\nlogger = Logger()\nif hasattr(logger, 'file') and logger.file != -1:\n    logger.log('Logger funcionando correctamente')\nelse:\n    print('Error: Logger no se inicializó correctamente')\n```\n\n## ✨ Mejores Prácticas\n\n### 1. Organización de Logs\n```python\nfrom datetime import datetime\n\n# Por fecha\ndate_str = datetime.now().strftime(\"%Y%m%d\")\nlogger = Logger(f'./logs/app_{date_str}.log')\n\n# Por funcionalidad\nauth_logger = Logger('./logs/authentication.log')\ndb_logger = Logger('./logs/database.log')\napi_logger = Logger('./logs/api_requests.log')\n```\n\n### 2. Manejo de Recursos\n```python\n# Patrón recomendado\ndef process_data():\n    logger = Logger('data_processing.log')\n    try:\n        logger.log('Iniciando procesamiento')\n        # ... procesamiento ...\n        logger.log('Procesamiento completado')\n    except Exception as e:\n        logger.log_e(e)\n    finally:\n        logger.close()\n```\n\n### 3. Logging Informativo vs Errores\n```python\n# ✅ Usar log() para eventos normales\nlogger.log('Usuario autenticado exitosamente')\nlogger.log('Base de datos conectada')\nlogger.log('Archivo procesado: 150 registros')\n\n# ✅ Usar log_e() solo para excepciones\ntry:\n    # operación riesgosa\n    pass\nexcept Exception as e:\n    logger.log_e(e)  # Información completa de traceback\n```\n\n## 🚀 Próximas Características\n\n- 🔄 Soporte para múltiples niveles de log (WARNING, DEBUG, CRITICAL)\n- 🔄 Context managers (with statement)\n- 🔄 Rotación automática de archivos por tamaño/fecha\n- 🔄 Configuración de formato personalizada\n- 🔄 Filtros de log por nivel\n- 🔄 Exportación a JSON/CSV\n\n## 📚 Recursos y Documentación\n\n- **[Documentación Completa](https://docs.dev2forge.software/chromologger/)** - Guía completa con ejemplos avanzados\n- **[PyPI Package](https://pypi.org/project/chromologger/)** - Información del paquete y versiones\n- **[GitHub Repository](https://github.com/Dev2Forge/chromologger)** - Código fuente y contribuciones\n- **[Changelog](https://github.com/Dev2Forge/chromologger/blob/main/CHANGELOG.md)** - Historial de versiones y cambios\n\n## 🤝 Contribuir\n\n¡Las contribuciones son bienvenidas! Si encuentras algún problema o tienes sugerencias:\n\n1. Crea un [Issue](https://github.com/Dev2Forge/chromologger/issues) para reportar bugs\n2. Envía un [Pull Request](https://github.com/Dev2Forge/chromologger/pulls) con mejoras\n3. Comparte feedback en las [Discussions](https://github.com/Dev2Forge/chromologger/discussions)\n\n## 📄 Licencia\n\nEste proyecto está bajo la licencia MIT. Consulta el archivo [LICENSE](https://raw.githubusercontent.com/tutosrive/chromologger/main/LICENSE) para más detalles.\n\n## 🙏 Agradecimientos\n\nDesarrollado por [Tutos Rive](https://github.com/tutosrive) con ❤️ para la comunidad Python.\n\n---\n\n\u003e **¿Te gusta chromologger?** ⭐ ¡Dale una estrella en GitHub y compártelo!\n\n\u003e **Nuevo proyecto:** Descarga [`bridgex`](https://github.com/Dev2Forge/bridgex) - Nuestro último proyecto para desarrollo avanzado\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDev2Forge%2Fchromologger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDev2Forge%2Fchromologger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDev2Forge%2Fchromologger/lists"}