Registrar usuario de GAM y Session ID en el log de GeneXus (Log4Net)
GeneXus utiliza log4net/log4j para generar el log tanto de las bibliotecas internas de Genexus como para el log de usuario.
Estas bibliotecas de log, son sumamente poderosas y permiten hacer un registro detallado de la actividad realizada en nuestra aplicación.
Para un proyecto especifico, necesitamos el registro del usuario y un identificador de la sesion en el log, de tal forma de poder filtrar luego por la actividad de un usuario especifico.
Vos a mostrar como lo resolví para .NET pero sirve también para java (aunque no lo probé).
Primero hice un procedure para definir una propiedad de log4net, con el código:
SetLog4NetProperty
//Log4NetPropertyKey and Log4NetPropertyValue son VarChar(100)
CSHARP log4net.ThreadContext.Properties[ [!&Log4NetPropertyKey!] ] = [!&Log4NetPropertyValue!];
Luego del Login en la aplicación hago:
SetLog4NetProperty('GAMUser',&GAMUser.Name)
y en los archivos de configuración del log (log.config y log.console.config) se pone:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{ISO8601} [%t] %-5p %c - %m
%property{GAMUser}%n"/>
</layout>
Esto va a generar a lo ultimo de cada línea el usuario de GAM que generó esa línea de log. También se puede recuperar la sesión y grabarlo en el log, para poder hacer un seguimiento de toda una sesión.
Comentarios
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.