Artículo
· 15 nov, 2023 Lectura de 5 min

Tutorial: Cómo mejorar la calidad del código con los registros codificados por colores de la herramienta de depuración visual

🐞🐛▶ Existe una herramienta muy útil que nos permite depurar código visualmente usando diferentes colores.

Los 20 gifs de "Los Simpsons" representan a los aprovechados que se acercan a  los emprendedores

🧩👨‍💻 Por ejemplo, si tenemos un Business Process, podemos seguir el flujo de ejecución del código escribiendo distintas variaciones de LOGS.

Podríamos depurar un Proxy/ WSCLIENTE; la clase cuya misión es conectar nuestras Business Operations con el sistema externo, mediante diferentes tipos de niveles de LOGS, como se muestra en el siguiente ejemplo:

Method adjuntarInforme(..., documentoBinario As %Stream.FileBinary) [ Final, ProcedureBlock = 1, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
 Do ##class(Ens.Util.Log).LogAssert("","","Assert it enters method adjuntarInforme")
 Do ##class(Ens.Util.Log).LogInfo("","","Info documentoBinario.Read(): "_documentoBinario.Read())

 do documentoBinario.Rewind()
 Do ##class(Ens.Util.Log).LogAlert("","","Alert")
 Do ##class(Ens.Util.Log).LogWarning("","","Warning")
 Do ##class(Ens.Util.Log).LogError("","","Error")
 Do ##class(Ens.Util.Log).LogStatus("","","1")

[...]

 do (..WebMethod("adjuntarInforme",...)
}

Como resultado, cuando ejecutemos este método, veremos en Visual Trace:

Como cabría esperar, cada paso escribe la salida esperada, como se muestra a continuación:

Afirmar:

Información:

Alerta:

Advertencia:

Error:

Estado:

Además, podríamos utilizar los diferentes niveles anteriores de registros dentro de cualquier otra clase. Por ejemplo, lo utilizaremos en un Business Service de la siguiente manera.

El código es el siguiente:

Method adjuntarInforme(..., documentoBinario As %Stream.FileBinary)
{
 $$$LOGASSERT("Assert it enters method adjuntarInforme")
 $$$LOGINFO("Info documentoBinario.Read(): "_documentoBinario.Read())

 do documentoBinario.Rewind()
 $$$LOGALERT("Alert")
 $$$LOGWARNING("Warning")
 $$$LOGERROR("Error")
 $$$LOGSTATUS("1")

[...]

}

Como se puede observar, podemos utilizar una versión abreviada de cada registro, ya que reconoce esas macros en Business Services, Processes y Operations; sin embargo no funciona en WSCLIENTS.

Después lo observaríamos en el LOG del servicio:

De esta manera, se puede observar fácilmente el nivel de cada registro con un color diferente, lo que es más agradable visualmente.

Además, ¿os habéis preguntado alguna vez cómo podríamos dar salida al error real dentro de un <catchall> en un Business Process?

Podemos hacerlo con el siguiente código:

$$$LOGINFO($System.Status.GetErrorText(context.%LastError))

Dentro de un Business Process, nombramos el <catchall> "Handle error"

y en él pondremos:

  $$$LOGWARNING($System.Status.GetErrorText(context.%LastError))

Entonces, en Visual Trace observamos:

 

La advertencia que genera el Proceso:

En conclusión, la herramienta de depuración visual que utiliza diferentes colores para cada nivel de registro es un recurso valioso para rastrear el flujo de ejecución del código e identificar errores de manera eficiente. Mediante el uso de macros, como $$$LOGASSERT, $$$LOGINFO, $$$LOGALERT, $$$LOGWARNING, $$$LOGERROR y $$$LOGSTATUS, podremos incluir registros fácilmente en Business Services, Processes y Operations. Además, la herramienta nos permite generar el error real dentro de un <catchall> en un Business Process, lo que facilita la identificación y resolución del problema. Esta herramienta es un gran ejemplo de cómo la tecnología puede simplificar el proceso de depuración, ahorrando tiempo y esfuerzo a los desarrolladores. 

Hay varios casos de uso para la herramienta de depuración visual que utiliza diferentes colores para cada nivel de registro. Uno de los escenarios más comunes es cuando se desarrollan aplicaciones complejas que requieren integración con sistemas externos. En este caso, la herramienta puede ayudarnos a depurar el código que conecta nuestras operaciones con el sistema externo, ya que podemos rastrear el flujo de ejecución e identificar errores fácilmente.

Otro caso de uso es cuando se trabaja con aplicaciones multiproceso. Depurar una aplicación multiproceso puede ser todo un desafío, ya que diferentes procesos pueden ejecutarse simultáneamente, lo que dificulta la identificación del origen del problema. Con la herramienta de depuración visual, podemos añadir registros a cada subproceso y distinguirlos por colores, lo que facilita el seguimiento del flujo de ejecución y la identificación del subproceso que causó el error.

La herramienta de depuración visual también puede ser útil cuando se trabaja con sistemas distribuidos, como las arquitecturas de microservicios. En un sistema distribuido, cada microservicio puede tener sus propios registros, lo que dificulta el seguimiento del flujo de ejecución y la identificación de errores que abarcan varios servicios. Con la herramienta de depuración visual, podemos añadir registros a cada servicio y distinguirlos por colores, lo que facilitará el seguimiento del flujo de ejecución y la identificación de los errores que se produzcan en varios servicios.

Además, la herramienta puede ser útil cuando se trabaja con código heredado o escrito por otra persona. En este caso, puede que ser no tengamos una comprensión clara del flujo de ejecución del código o de dónde añadir registros para identificar errores. Si utilizamos la herramienta de depuración visual, podremos seguir el flujo de ejecución del código e identificar las áreas en las que necesitamos incorporar registros para identificar errores.

Por último, la herramienta de depuración visual puede ser útil cuando se trabaja con problemas de rendimiento. Si añadimos registros en distintas partes del código, podemos hacer un seguimiento del tiempo de ejecución e identificar las áreas que están causando problemas de rendimiento. Mediante el uso de diferentes colores para cada nivel de registro, podemos identificar rápidamente las áreas que requieren optimización.

En resumen, la herramienta de depuración visual que utiliza diferentes colores para cada nivel de registro puede ser útil en varios escenarios, incluido el desarrollo de aplicaciones complejas, aplicaciones multiproceso, sistemas distribuidos, código heredado y problemas de rendimiento. Al utilizar la herramienta, podemos seguir el flujo de ejecución del código, identificar errores y optimizar el rendimiento, lo que la convierte en un valioso recurso para los desarrolladores.

¡Espero que os haya resultado útil!
 

Gracias a mis compañeros de la Oficina de Interoperabilidad de Canarias, por su ayuda y asesoramiento.
 

Comentarios (0)0
Inicie sesión o regístrese para continuar