Gestire in maniera centralizzata il log degli errori di un'applicazione ASP.NET MVC

di Marco De Sanctis, in ASP.NET MVC,

Quando abbiamo un'applicazione in produzione, è molto comodo avere a disposizione un gestore centralizzato degli errori, tramite cui, per esempio, loggare le informazioni necessarie per la diagnostica.

In ASP.NET MVC è sufficiente realizzare un exception filter, ossia una classe che implementi l'interfaccia IExceptionFilter, simile a quella del codice in basso:

public class LogExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext filterContext)
    {
        if (filterContext == null || filterContext.Exception == null)
        {
            return;
        }
            
        var uri = filterContext.HttpContext.Request.Url.ToString();
            
        var exception = filterContext.Exception.GetBaseException();

        Trace.TraceError("Uri: {0} - Error: {1}", uri, exception);
    }
}

Nell'esempio, recuperiamo due informazioni basilari, quali l'URL invocato e l'eccezione stessa, per poi loggarli tramite il TraceListener configurato su web.config. All'interno della classe ExceptionContext abbiamo a disposizione tutte le informazioni necessarie per tracciare l'errore, come il contenuto della eventuale form inviata, l'istanza del controller, i parametri di routing, ecc.

Per attivare questo filtro è sufficiente registrarlo a livello globale sulla classe FilterConfig dell'applicazione:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new LogExceptionFilter());
    filters.Add(new HandleErrorAttribute());
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi