Quando si verifica un'eccezione in produzione, vogliamo avere a disposizione un sistema per loggarle e per poter così diagnisticarne la causa. Per questo scopo, ASP.NET Web API utilizza un servizio denominato IExceptionLogger.
Possiamo realizzare il nostro logger personalizzato semplicemente creando una classe che implementi questa interfaccia:
public class MyExceptionLogger : IExceptionLogger { public async Task LogAsync(ExceptionLoggerContext context, CancellationToken cancellationToken) { // do something here... Trace.TraceError(context.Exception.ToString()); } }
L'esempio in alto è banale, e si limita a utilizzare il Trace di sistema per tracciare i dettagli dell'eccezione. Ovviamente, però, possiamo realizzare un sistema complesso quanto vogliamo, che magari sfrutti framework più evoluti come NLog o simili.
L'oggetto ExceptionLoggerContext che riceviamo come parametro, contiene una serie di dettagli relativi al contesto in cui si è verificato l'errore, tra cui l'Exception sollevata, l'eventuale handler definito per gestirla, il contesto della richiesta, ecc.
Per attivare il nostro logger, dobbiamo ricordarci di impostarlo in fase di startup tra i Services della configurazione di ASP.NET Web API, nel file App_Start\WebApiConfig.cs:
public static void Register(HttpConfiguration config) { ... config.Services.Add(typeof(IExceptionLogger), new MyExceptionLogger()); ... }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare automaticamente un workflow di GitHub (parte 2)
Sfruttare lo streaming di una chiamata Http da Blazor
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Utilizzare la libreria Benchmark.NET per misurare le performance
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Definire stili a livello di libreria in Angular
Implementare il throttling in ASP.NET Core
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Evitare la command injection in un workflow di GitHub
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Creare moduli CSS in React
I più letti di oggi
- I lego? Programmabili con .NET!
- Disponibile anche il runtime di ASP.NET 2.0
- Azure Mobile Services: costruire il back-end per le app
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Release candidate per Expression Blend
- #sqlserver 2008 r2 CTP: report builder 3.0 e #businessintelligence http://u.aspitalia.com/g
- #wcfRIAservices è pronto: http://u.aspitalia.com/d4. se vuoi un'introduzione, la nostra è su http://u.aspitalia.com/d3
- segui live #futuredecoded da Roma dalle 9:30 su http://www.communitydays.it