Usando IA para detectar problemas de performance en aplicaciones GeneXus


En aplicaciones grandes desarrolladas con GeneXus, detectar problemas de performance puede ser una tarea compleja. Los logs generados con log4net contienen muchísima información valiosa, pero leerlos manualmente no escala.

En este post te comparto una metodología práctica para analizar estos logs utilizando NotebookLM, aprovechando su capacidad de entender documentos y responder preguntas sobre ellos.


Idea general

La propuesta es simple pero poderosa:

  1. Convertir los logs de ejecución en documentos (PDF)

  2. Subirlos como fuentes a NotebookLM

  3. Hacer preguntas inteligentes sobre el contenido

  4. Obtener insights de performance automáticamente

Esto transforma un análisis manual tedioso en un proceso asistido por IA.


Paso 1: Generar los logs correctamente

Asegurate de que tu aplicación GeneXus esté generando logs con suficiente detalle (al menos DEBUG).
Yo lo uso asi:



 Un formato típico de log4net (es el default que trae GX) que funciona muy bien es:

%d{yyyy-MM-dd'T'HH:mm:ss.fffzzz} [%t] %-5p %c - %m%n

Esto te da:

  • Timestamp con precisión de milisegundos

  • Nivel de log (INFO, DEBUG, WARN, etc.)

  • Mensaje (incluyendo SQL, nombre de programa, parametros, etc.)


Paso 2: Convertir logs a PDF

NotebookLM trabaja mejor con documentos estructurados. Por eso:

  • Convertí tus archivos .log a .pdf . Yo uso un driver de impresion a PDF. 

  • Si el archivo es muy grande, dividilo por partes (ej: por día o por thread)


Paso 3: Subir los logs a NotebookLM

  1. Crear un nuevo notebook en NotebookLM

  2. Subir los PDFs como “Sources”

  3. Esperar a que indexe el contenido

Una vez hecho esto, NotebookLM ya puede “leer” y entender tus logs.


Paso 4: Hacer consultas inteligentes

Acá está la clave del valor.

Ejemplos de preguntas útiles:

🔹 Detección de cuellos de botella

  • “¿Cuáles son las operaciones más lentas?”

  • “¿Qué consultas SQL tienen mayor tiempo de ejecución?”

🔹 Análisis de patrones

  • “¿Hay procesos que se repiten muchas veces?”

  • “¿Qué sentencias sql aparecen más frecuentemente en los logs?”

🔹 Problemas potenciales

  • “¿Detectas esperas largas entre eventos?”

  • “¿Hay indicios de problemas de concurrencia o bloqueos?”

🔹 Recomendaciones

  • “Dame 3 recomendaciones para mejorar la performance basadas en estos logs”

NotebookLM no solo responde, sino que además cita partes específicas del log como evidencia.


Paso 5: Iterar como si fuera un analista experto

Una gran ventaja es que podés iterar:

  • Refinar preguntas

  • Focalizar en un proceso específico

  • Pedir explicaciones más técnicas

Esto simula tener un analista senior revisando logs contigo.


 Casos de uso concretos en GeneXus

Esta metodología es especialmente útil para:

  •  Identificar procedimientos batch lentos

  • Detectar SQL mal optimizado

  • Analizar conexiones lentas

  • Entender comportamiento en producción

  • Validar mejoras luego de optimizaciones


Bonus: combinándolo con herramientas propias

Si ya tenés herramientas como analizadores de logs (por ejemplo scripts o utilidades internas), podés combinarlas:

  • Preprocesar los logs (ej: detectar demoras grandes)

  • Luego usar NotebookLM para el análisis cualitativo

Lo mejor de ambos mundos: automatización + interpretación inteligente


Consideraciones importantes

  • Los logs pueden contener datos sensibles → anonimizar si es necesario

  • NotebookLM tiene límites de tamaño → dividir archivos grandes

  • No reemplaza el conocimiento técnico → lo potencia


Conclusión

El análisis de performance ya no tiene que ser un proceso manual, lento y propenso a errores.

Usando NotebookLM, podés transformar tus logs de GeneXus en una fuente de conocimiento accionable, acelerando el diagnóstico y mejorando la calidad de tus sistemas. No es el uso mas tradicional de NotebookLM pero es efectivo y ahorra mucho en en analisis de logs. 


Si estás trabajando con aplicaciones grandes o sistemas críticos, esta metodología puede marcar una diferencia enorme en productividad.

* Esta metodologia es mejor cuando analiza proceso batch. Para esto, es recomendable utilizar procedures command line como wrapper que llame al procedure que se quiere optimizar y generar el log solo de ese objeto. 

La Yapa

Comparto alguno de los prompts que uso para analizar los logs.

Prompt para iniciar el NotebookLM


Actúa como un experto en performance de aplicaciones GeneXus.

Analiza estos logs generados con log4net.
Los logs contienen timestamps, niveles de log y mensajes de ejecución.

Tu objetivo es:
1) Detectar cuellos de botella
2) Identificar operaciones lentas
3) Encontrar patrones repetitivos ineficientes
4) Detectar esperas entre eventos
5) Proponer mejoras concretas

Cuando respondas:
- Usa evidencia concreta del log
- Cita ejemplos
- Sé específico (no general)
- Prioriza impacto alto en performance

Pregunta Generica


Analiza estos logs de GeneXus como experto en performance.

1) Detecta las operaciones más lentas
2) Encuentra gaps de tiempo > 500 ms
3) Identifica patrones repetitivos
4) Analiza SQL problemático

Devuelve:
- Top 5 problemas
- Evidencia concreta
- Recomendaciones accionables

Sentencias SQL 


Extrae todas las sentencias SQL detectadas en los logs.

Para cada una:
- Identifica frecuencia
- Evalúa posibles problemas (filtros, índices, joins, funciones)
- Detecta patrones de mala performance

Devuelve:
- Top queries más problemáticas
- Recomendaciones específicas

Comentarios

  1. Muchas gracias. Entendí todo, excepto la parte más importante: **“Paso 1: Generar los logs correctamente”**.

    ¿Cómo lo haces tú en la práctica?

    ¿Dentro del `For each` agregas algo como esto?

    ```genexus id="e8f8c1"
    &Log.Error(!'&Variable: ' + &Variable.Trim(), &Pgmname)
    ```

    Y en el generador, ¿configuras las propiedades **Log Level** y **User Log Level** en **All**?

    Además, ¿el archivo `client.log` después lo conviertes a PDF para revisarlo o compartirlo?

    ResponderBorrar
    Respuestas
    1. Esto esta pensado para hacerlo sin modificar los programas, usando unicamente el log que genera GeneXus con las clases standard. O sea, usando Log Level = DEBUG y generarlo a un archivo. Luego puedes imprimir el log a un PDF y ese es el que le puedes subir a la IA. Si bien notebookLM acepta archivos de texto, por el contenido del TXT no logra subirlo. Yo lo probe con .NET, supongo que con Java es algo parecido, aunque el log de Java es un poco diferente.

      Borrar
  2. Muy bueno Enrique! Es excelente porque esos client.log son inhumanos! jaja Lo voy a probar. Gracias!

    ResponderBorrar
  3. Probaste KBbridge.com? Yo todavia no lo he usado para hacer test de perfomrance pero estoy haciendo un montón de cosas mas con A.I. en genexus, por ejemplo cree 6 MPCs "nativos" dentro del .NET de genexus y se despliéga junto con la aplicación, son parte de la aplicación , otro "servicio REST" (esto en la 17)

    ResponderBorrar
    Respuestas
    1. Hola, yo todavia no lo he probado. Entiendo que hace lo mismo o muy parecido a lo que hace el GeneXus for Agents. No he tenido tiempo de probar a fondo ninguno de los dos.

      Borrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Impresión directa a impresora en el WEB con aplicaciones GeneXus.

Migrando de GeneXus 9.0 a GeneXus X.