Registrar eventos con NLog usando C#

Usando nlog en una libreta.

Una de las tareas a la que un programador suele dar menos atención es al registro de eventos de una aplicación. Es importante durante el desarrollo y aún más cuando la aplicación se encuentra en productivo realizar esa tarea. NLog puede hacer esa tarea sin problemas.

Un registro o bitácora nos permite ir guardando información de nuestro programa con la finalidad de que posteriormente podamos encontrar la causa de un problema o la ausencia del mismo. La utilidad de estas herramientas es muy importante porque nos ahorrará mucho tiempo durante todas las etapas de un proyecto que al final es importante.

Implementación

En .NET Core se vuelve múy fácil la implementación de cualquiera de esas herramientas ya que prácticamente sólo debemos configurarlas en un sólo lugar, haciendo que las demás clases no necesiten saber quién ni cómo se hace el registro y que posteriormente en caso de ser necesario, pueda cambiar de manera rápida la herramienta.

Ahora bien, partiendo de la idea de que casi todo es manejado por paquetes, vamos a instalar el paquete correspondiente “Nlog” y el “NLog.Extensions.Logging“, que para el momento en que se escribe este artículo, aún se encuentran en etapa de prueba, es por eso que demos usar el modificador -“Pre” lo cuál instalará el paquete aún no siendo la versión final.

> Install-Package Nlog -Pre
> Install-Package NLog.Extensions.Logging -Pre

Una vez que los paquetes se instalan en el proyecto, lo siguiente es definir la configuración de la herramienta, esto suele cambiar de acuerdo a la herramienta que usemos. Algunos como Serilog usan ya el archivo “project.json”, otros como log4net siguen usando archivos “*.config”, pero en todos hay que definir básicamente una cosa: a dónde enviaremos la información.

En el caso de Nlog, lo que debemos hacer es crear un archivo llamado nlog.config (en raíz del proyecto).

.NET Core utiliza un inyector de dependencias integrado, lo que significa que los programadores pueden incluir casi cualquier clase que pueda realizar la tarea sin conocer quién la implementa.

Para usar esa característica, debemos ir al archivo “Startup.cs”, esa clase es ejecutada justo antes de iniciar la aplicación, de tal manera que es un buen lugar para ir registrando quiénes van a realizar diferentes tareas. Una de ellas: el registro de eventos.

NLog contiene una extensión de ILoggerFactory que permite crear la función “AddNlog()”, e implementar en .NET Core lo necesario para poder usarlo.

El registro de eventos.

Durante el desarrollo de la aplicación, es importante ir registrando los eventos que ocurran.

Una vez que el proyecto se ejecuta el registro se va guardando, dando como resultado un archivo de texto con la información que generada. Inclusive si no hemos configurado la herramienta, la clase podrá funcionar sin problemas. Por lo tanto es una buena recomendación incluir en el constructor al quien se encargará de los eventos.

Tipo de eventos

La interfaz define varios tipos de eventos, esto es importante porque en producción no querrás ver todos los eventos siendo recomendable ver los que sean advertencias o errores. La tabla de eventos en orden de prioridad es la siguiente:

LogLevel
Trace LogTrace(“Versión 1.0.0-beta.”);
Debug LogDebug(“El registro ha sido guardado.”);
Information LogInformation(“El espacio en disco es óptimo.”);
Warning LogWarning(“Queda poco espacio.”);
Error LogError(“No se pudo guardar el registro porque no esta disponible.”);
Critical LogTrace(“La aplicación no puede continuar.”);

Recomendaciones

Guardar el registro de eventos en una aplicación puede ser en un archivo de texto, XML, un correo así cómo un servicio web. La mayoría de esto depende mucho de la biblioteca que estamos usando. Tómese un momento en leer el listado de destinos de NLog, ahí encontrará ejemplos sobre los demás destinos.

Si decide usar un archivo de texto, procure ubicarlo en una carpeta distinta a la de la aplicación y que tenga los permisos de escritura. De igual manera puede guardar el registro en varias destinos al mismo tiempo. Si decide cambiar de herramienta, con la inyección de dependencias, sólamente deberá cambiar el archivo “Startup.cs” con su nueva configuración. Puede ahorrar mucho tiempo mientras que en otro caso habría que ir archivo por archivo y casi función por función.

Como puede observar, tanto NLog como cualquier otra herramienta nos puede servir para ir registrando eventos. Es muy probable que la herramienta pronto cambie a una versión en productivo. En ese caso ya no será necesario incluir el modificador “-Pre” al instalar el paquete.

Comments

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *