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
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Paginare i risultati con QuickGrid in Blazor
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Gestire domini wildcard in Azure Container Apps
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Cancellare una run di un workflow di GitHub
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Gestire gli accessi con Token su Azure Container Registry
Generare la software bill of material (SBOM) in GitHub
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online