Skip to content

Feat/issue 7 logger#9

Open
Catriel42 wants to merge 2 commits intomainfrom
feat/issue-7-logger
Open

Feat/issue 7 logger#9
Catriel42 wants to merge 2 commits intomainfrom
feat/issue-7-logger

Conversation

@Catriel42
Copy link
Copy Markdown
Collaborator

Resumen del Pull Request

Este PR introduce dos mejoras fundamentales para la infraestructura del proyecto: soporte de compilación y ejecución nativo para entornos de Linux (sin que la app crashee), y una reestructuración completa del sistema de rastreo de eventos mediante logs persistentes.

¿Qué se ha añadido/cambiado?

1. Entorno y Soporte para Linux:

  • build.sh y LINUX-DEV.md: Se agregaron los scripts y documentación equivalente a la de Windows para facilitar la contribución desde distribuciones Linux.
  • Fix Crítico de SystemTray: Se envolvió la inicialización del icono de la bandeja del sistema en un if (SystemTray.isSupported()). Esto evita el crasheo inmediato por UnsupportedOperationException cuando el puente se ejecuta en entornos Linux o servidores headless que no soportan bandejas nativas.

2. Sistema de Logs Persistentes (java.util.logging):

  • Nativo y sin dependencias: Se creó LoggerConfig.java utilizando exclusivamente la librería nativa de Java, evitando inflar el peso del ejecutable.
  • Refactorización masiva: Se erradicó el uso de los frágiles System.out.println y System.err.println en todo el proyecto (DiscordPipeSocket, RobloxMonitor, SourceManager), reemplazándolos con logger.info y logger.severe.
  • Archivos Físicos: Ahora el puente puente genera automáticamente una carpeta logs/ y escribe todos los eventos en ella con marcas de tiempo (timestamps) precisas, facilitando enormemente el debugging si la consola se cierra.
  • Configuración Dinámica: Se enseñó a Config.java a extraer una nueva propiedad opcional "logFile" desde el config.json. Si el usuario la omite, el código tiene una red de seguridad que asume inteligentemente la ruta logs/dps.log.
  • Documentación: El README.md fue actualizado para explicar el uso nativo de los nuevos logs físicos (reemplazando el viejo concepto de logs.jar).

¿Cómo probar esto en Windows?

He diseñado estos cambios cuidando absolutamente la compatibilidad con Windows. Para que puedas validar mi código en tu propia computadora, sigue estos pasos:

  1. Recompilar el código: Haz doble clic en tu archivo de siempre, build.bat. El script debería ejecutarse sin errores e incluir silenciosamente nuestra nueva clase (LoggerConfig.class).
  2. Preparar la configuración: Abre tu config.json normal y añade la nueva variable al final. Debería verse así:
    {
      "clientId": "1479761532412887040",
      "wsPort": 6680,
      "sourceTimeout": 15000,
      "logFile": "logs/prueba-de-logs.log"
    }
  3. Ejecutar el túnel: Ejecuta el nuevo DiscordPipeSocket.jar generado en la carpeta (ya sea con doble clic o desde una consola). Notarás que el formato de los textos cambió en la terminal negra, incorporando la hora exacta.
  4. Forzar un evento (El test clave): Sin necesidad de abrir extensiones, navega hacia tu carpeta local custom-status/ y haz doble clic en el archivo index.html para que se abra en tu navegador web.
  5. Comprobar la persistencia: Cierra el programa de Java. Notarás que apareció una nueva carpeta llamada logs/ en el proyecto. Ábrela y abre prueba-de-logs.log. Ahí verás escrito con éxito el momento exacto en el que el programa arrancó y en el que el archivo HTML se conectó exitosamente a tu puente.

Se introduce un mecanismo de logs robusto usando la librería nativa de Java, eliminando la dependencia de impresiones temporales en consola (System.out) y ofreciendo un registro persistente de todos los eventos.

Cambios clave:
- Creación de LoggerConfig.java para manejar la exportación a archivo (.log) y a la consola con un formato de fecha personalizado.
- Se actualizó el 'parseo' en Config.java para extraer la variable 'logFile' desde config.json, con un valor por defecto seguro de 'logs/dps.log'.
- Migración exitosa de todos los mensajes System.out.println y System.err.println hacia el nuevo Logger a través de DiscordPipeSocket, RobloxMonitor y SourceManager.
- README.md actualizado con instrucciones explícitas sobre la configuración de logs y pasos para solucionar errores (Troubleshooting).
- Solución crucial: Se cubrió la inicialización de la bandeja del sistema (SystemTray) con 'isSupported()' para prevenir los crasheos por UnsupportedOperationException en los entornos de Linux.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant