Saltar al contenido principal

Logs

Para generar los logs del sistema, StoneFramework utiliza la biblioteca log4j/log4net provista por Genexus.

Según apache:

"Esta librería permite habilitar log en tiempo de ejecución sin modificar los binarios de la aplicación. La librería fue diseñada para que las sentencias de log puedan ser enviadas junto con la aplicación sin incurrir en problemas de performance".

Por otro lado se puede configurar tiempo de ejecución para que guarde el log en un archivo, lo envíe por mail, lo envíe por udp a Kibana/OpenSearch, etc. Esto lo hace sensacional al momento de manipular los “logs” en nuestra aplicación.

Se recomienda leer los siguientes artículos para facilitar el entendimiento:

Funcionamiento

Esta librería clasifica los logs de 6 formas:

  • OFF - Apagado
  • Debug
  • Info
  • Warn
  • Error
  • Fatal

Es una clasificación jerárquica en la que estableciendo "debug" se loguea todo (info, warn, error, etc) y a medida que se va subiendo en la clasificación, se va limitando la generación de logs, por ejemplo, si se especifica "Error", se generan logs de "error y fatal".

Configuración para generar logs en Genexus

En la KB GeneXus se pueden generar los logs de la aplicación mediante esta librería al setear las propiedades del generador:

Log level/User Log level = [el nivel de log que deseamos ej.: debug]

Luego se puede elegir donde se va a generar. Por defecto está File y cliente.log (el archivo que contendrá el log).

Generación Logs

Para generar logs, StoneFramework dispone de la función LogAdd la cual envía logs a la librería log4net y log4j (próximamente).

Filtrando la información de logs que se generan

Al configurar GeneXus para generar logs, se puede generar gran catidad de información y eventualmente una degradación del sistema. Por este motivo, mediante configuración se puede filtrar los logs que se desean generar.

Para filtrar la información que se genera, debemos modificar los archivos de configuración de la aplicación. En .net serían "log.config" o "log.console.config", en java "log4j2.xml"

Si se desea evitar generar logs de GeneXus, realizaremos el siguiente cambio:

<root>
<level value="DEBUG" /> ---> cambiar por ---> <level value="OFF" />
<appender-ref ref="RollingFile" />
</root>

Las modificaciones al archivo de configuración para que se genere el log sería:

<logger name="GeneXusUserLog">
<level value="DEBUG" />
</logger>
<logger name="GeneXusUserLog.StoneFramework">
<level value="WARN" />
</logger>
<root>
<level value="OFF" />
<appender-ref ref="RollingFile" />
</root>

Nota: Los logs nativos de StoneFramework se generan bajo el logger "GeneXusUserLog.StoneFramework".

LogAdd

Generadores: .Net, Java

Propósito
Generación estándar de logs del sistema.

Sintaxis

LogAdd( LogLevels-in:&LogLevels, Character-in:&Program, Character-in:&LogText)

  • &LogLevels: Niveles de log basado en el dominio enumerado LogLevels (Fatal, Error, Warn, Info, Debug)
  • &Program: Programa que está generando el log. Normalmente se pasa &Pgmname.
  • &LogText: Texto a registrar.

Ejemplo

LogAdd.Call( LogLevels.ERROR, &Pgmname, "Usuario no autenticado" )

Nota: El ejemplo generará un log tipo error para el logger "GeneXusUserLog" con “Usuario no autenticado”.

Volver al inicio

Más información: