Manejando excepciones en ASP.NET MVC con ELMAH

Hace un tiempo tuve una necesidad de revisar con mayor detalle las excepciones que estaba generando una funcionalidad en un proyecto ASP.NET MVC. Tuve restricciones en cuanto a que la información que registraba el sitio web no era óptima, y aparte de eso no se le podía hacer modificaciones de código para agregar funcionalidad de logging. Investigando qué hacer para poder obtener mayor detalle del error con las condiciones mencionadas, me encontré un componente muy útil llamado ELMAH.

ELMAH es un componente que permite hacer captura y logging de todo tipo de excepciones no controladas en una aplicación. Su principal característica es que es totalmente “Plug & Play”, se puede adicionar a un sitio web y con una configuración básica podemos comenzar a utilizarlo. En su sitio web se indica que se puede configurar para guardar excepciones en memoria, archivos planos o bases de datos. A continuación les mostraré como adicionar ELMAH y configurarlo para usar log en archivos XML, tal como yo lo usé.

Lo primero que hice fue adicionar el paquete Elmah.MVC a través de Nuget a mi proyecto ASP.NET MVC.

ELMAH_01

Luego de esto, lo único que tuve que hacer fue terminar de adicionar unas lineas en el archivo Web.config, asegurándome que la siguiente configuración se encuentre dentro de la etiqueta <system.web />:

<httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>

También deben estar las siguientes instrucciones dentro de la etiqueta <system.webserver />:

<modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
    <handlers>
      <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </handlers>
<modules/>

Y el último paso es configurar el tag <elmah /> en el Web.config para indicarle que se generen los logs en archivos XML. En este caso lo almacenaremos en una misma carpeta del proyecto ASP.NET MVC:

<elmah>
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />    
  </elmah>

Hecho esto, se puede ejecutar la aplicación, y para acceder al log de ELMAH basta acceder a la URL predeterminada, como se puede ver en las siguientes imágenes:

http://{servidor}/{sitio}/elmah.axd

ELMAH_02

ELMAH_03

Y bien, esto es todo. Pueden visitar la página web del proyecto ELMAH si quieren ver más información. Igualmente me encontré que existe desde hace un tiempo el servicio ELMAH Cloud Logging, una alternativa interesante para log de aplicaciones en la nube, por si desean visitarlo también.

El código fuente del ejemplo puede ser descargado en mi repositorio de GitHub.

ironcat

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: