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:
Convertir los logs de ejecución en documentos (PDF)
Subirlos como fuentes a NotebookLM
Hacer preguntas inteligentes sobre el contenido
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
.loga.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
Crear un nuevo notebook en NotebookLM
Subir los PDFs como “Sources”
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
Muchas gracias. Entendí todo, excepto la parte más importante: **“Paso 1: Generar los logs correctamente”**.
ResponderBorrar¿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?
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.
BorrarMuy bueno Enrique! Es excelente porque esos client.log son inhumanos! jaja Lo voy a probar. Gracias!
ResponderBorrarExcelente!
ResponderBorrarProbaste 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)
ResponderBorrarHola, 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