En la red hay muchos logger remotos y he probado algunos de ellos, pero siempre me he encontrado con que fallaban al intentar utilizarlos en una app Android, por cierto ésta es la última app que he realizado por si quieren probarla.
Al final he encontrado una solución que me ha parecido magnífica y que se la recomiendo por lo fácil que es su implementación y lo potente que es, se llama GrijjyCloudLogger.
GrijjyCloudLogger es una herramienta de registro remoto que le permite enviar mensajes de registro a través de la Intranet o Internet desde dispositivos Windows, Linux, iOS, Android y macOS a un visor que se ejecuta bajo Windows. Envía mensajes junto con cualquier dato, y tiene numerosas características que incluyen relojes en vivo personalizados, vistas remotas en vivo de objetos, seguimiento del uso de memoria en vivo, asignaciones de objetos y más.
Según indican en su página está disponible desde Getit, pero en mi distribución no aparece (Rad Studio 11.2), por lo que tuve que instalar los siguiente programas:
- GrijjyCloudLogger - https://github.com/grijjy/GrijjyCloudLogger
- GrijjyFoundation - https://github.com/grijjy/GrijjyFoundation
- DelphiZeroMQ - https://github.com/grijjy/DelphiZeroMQ
Después desde la plataforma Delphi RadStudio hay que ir a Tools - Options - Language - Delphi - Library, y seleccionar la plataforma "Android 64-bit platform"
y en la opción "Library path" añadir la ruta de instalación, para que quede de la siguiente forma:
En algunas ocasiones me ha dado un error inesperado que lo he solucionado de la siguiente forma:
Desde Project - Options - Delphi - Compiler - Compiling
Menú DEBUG
En "Debug Information" poner "Limited Debug Information"
y en la opción RUNTIME
ERRORS - OVERFLOW CHECKING (Desmarcar)
ERRORS - RANGE CHECKING (Desmarcar)
Después hay que ejecutar los programas GrijjyLogBroker.exe y GrijjyLogViewer.exe que están localizados en el directorio /GrijjyCloudLogger/Bin
GrijjyLogBroker.exe será el encargado de tramitar los mensajes enviados por el logger de vuestro programa y GrijjyLogviewer.exe será el encargado de mostrarlos en pantalla.
Al abrir GrijjyLogviewer.exe hay que pulsar el botón "Connect" y aparecerá una ventana con la IP del equipo p.ej: tcp://192.168.12.45:7337 (el Broker utiliza siempre el puerto 7337 para recibir los mensajes)
y con eso ya tenemos preparado nuestro sistema para recibir los mensajes de log de nuestra app.
Ahora ¿qué hay que hacer desde nuestra aplicación?
1) Añadir en el bloque USES de la unit del form principal: Grijjy.CloudLogging
Dentro del archivo Grijjy.Cloudlogging.pas hay que indicar la IP del Broker y el puerto, que siempre será 7337:
DEFAULT_BROKER = 'tcp://192.168.12.45:7337'; (la IP que corresponda en su caso)
DEFAULT_SERVICE = 'Default';
2) En el evento OnCreate del form principal añadir:
GrijjyLog.SetLogLevel(TgoLogLevel.Info);
GrijjyLog.Connect('tcp://192.168.12:45:7337', 'Default'); (la misma IP que han puesto en el Viewer anterior)
3) Los mensajes de log del programa se indican del siguiente modo:
GrijjyLog.Send('Mensaje1', TgoLogLevel.Info);
GrijjyLog.Send('entro en bucle FOR', TgoLogLevel.Info);
GrijjyLog.Send('Salgo del bucle FOR', TgoLogLevel.Info);
GrijjyLog.Send('String value', 'Foo'); // strings
GrijjyLog.Send('Integer value', 42); // integer
GrijjyLog.Send('Boolean value', True); // boolean
GrijjyLog.Send('Float value', Pi); // extended
Muy importante, tienen que comprobar que su PC con Windows y su dispositivo móvil estén dentro del mismo rango de red, por ejemplo si la IP del PC con Windows es 192.168.12.5 el dispositivo Android tendría que tener como IP 192.168.12.(1..254).
Para conseguir esto lo que hago es desactivar los "datos" del móvil para que el dispositivo se conecte por Wifi a mi router con lo que fuerzo a que el PC y el móvil estén en el mismo rango de red.
No hay comentarios:
Publicar un comentario