20 de mayo de 2010

Trace de NHibernate con syntax highlighting

NHTrace es una aplicación open source que muestra las sentencias sql generadas por NHibernate, tal como se podrían ver por consola, pero en este caso con syntax highlight para poder ver de forma mas amigable el código sql generado.



Para resolver el tema de syntax highlighting, a falta de buenas librerías open source en C#, decidí optar por usar librerías javascript y mostrar los mensajes en un componente WebBrowser.

Acá apareció el primer problema, el componente WebBrowser que viene con el framework funciona de forma tal, que cuando se asigna el código html a mostrar, por cuestiones de seguridad no se soporta la ejecución de código javascript. Para resolver esto fue necesario crear una clase que herede del WebBrowser e implementar algunas interfaces para que la seguridad la podamos manejar nosotros y así habilitar la ejecución de javascript.

Por suerte alguien ya había hecho algo así antes, porque seguir la documentación de la MSDN para hacer esto es, con riesgo a quedarme corto, muy confuso.

Para resolver el problema de "escuchar" los eventos de log4net, se presentaban distintas opciones con respecto a qué appender de log4net utilizar. A continuación menciono los appenders que fui probando y el motivo por el cual los descarté:

RemotingAppender: De forma aleatoria, los eventos llegaban desordenados

UdpAppender: De forma aleatoria, algunos eventos se "perdían"

FileAppender: Esta era una opción bastante aceptable, pero no llegué a resolver un problema que se presenta cuando se configura el appender con "appendToFile" en false (probablemente en el futuro le dedique mas tiempo para ver si se puede resolver)

Teniendo en cuenta que ninguno de estos appenders me servían de mucho, gracias a google (cuándo no) encontré que en el repositorio de svn de log4net hay un MsmqAppender que no está incluido en la distribución de log4net, pero realmente funciona perfecto, no pierde eventos y los eventos llegan en el orden correcto. La única desventaja de este appender es que hay que configurar el Message Queuing de Windows, ya que ese es el mecanismo que utiliza para la transmisión de los eventos, pero de todas maneras es algo muy sencillo de hacer.

Para más detalles sobre cómo configurar qué librería utilizar para el syntax highlight, cómo configurar MSMQ y log4net, está todo explicado en el sitio del proyecto, claro que desde ahí también se puede descargar la aplicación.

Espero que sea de utilidad, cualquier comentario ó sugerencia de mejora será bienvenido.

No hay comentarios:

Publicar un comentario