Sia durante lo sviluppo e testing, ma soprattutto in produzione, è cruciale avere un solido sistema di tracelog: in questo modo siamo in grado di diagnosticare in maniera precisa cosa sta accadendo nell'applicazione, persino in condizioni in cui, per esempio, attivare il debugger e procedere step-by-step non è possibile.
ASP.NET Web API possiede un sistema di tracing infrastrutturale che può essere attivato installando il package NuGet seguente:
install-package Microsoft.AspNet.WebApi.Tracing
Esso contiene una classe chiamata SystemDiagnosticsTraceWriter che possiamo attivare dal file WebApiConfig.cs in questo modo:
var logger = config.EnableSystemDiagnosticsTracing();
A questo punto, se eseguiamo l'applicazione in debug da Visual Studio, potremo vedere le righe di log nella finestra di output:

Questo accade perchè internamente questo logger utilizza l'infrastruttura di tracing di System.Diagnostics; se non diversamente configurata, essa ha un solo listener di tipo DefaultTraceListener, che sfrutta la console di debug.
Ovviamente possiamo modificare questo comportamento agendo sul file web.config, come faremmo per ogni altra applicazione .NET. Se vogliamo loggare su file, per esempio, ci basta aggiungere questo blocco XML:
<system.diagnostics> <trace autoflush="true" indentsize="4"> <listeners> <add name="fileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" /> </listeners> </trace> </system.diagnostics>
Per aggiungere le nostre righe di log personalizzate, invece, non dobbiamo far altro che recuperare una reference al logger all'interno del nostro codice:
public class ValuesController : ApiController { public string Get(int id) { var writer = this.Configuration.Services.GetTraceWriter(); writer.Trace(this.Request, "Custom", TraceLevel.Debug, "Recupero elemento di id {0}", id); return "value"; } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire uno scroll all'interno di una pagina Blazor
Gestire dati sensibili nella configurazione in ASP.NET Core
Le novità di .NET 7 e C# 11
Leggere e scrivere su cookie tramite Blazor
Test reporting in un workflow di GitHub
Utilizzare le Promise in Javascript - seconda parte
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Dependency Injection e custom validator in Blazor con .NET 7.0
Impostare il tema light o dark utilizzando i CSS
Monitorare i server on-premises con Azure Arc
Pubblicare un pacchetto di NuGet nel feed di GitHub
Impostare il forward degli header in un sito ASP.NET Core dietro a un reverse proxy
I più letti di oggi
- Sfruttare la local cache del browser tramite gli ETag in #aspnetcore https://aspit.co/cfc di @crad77 #webapi #aspnetmvc #blazor #cache
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Effettuare update massivi con Entity Framework Core 7
- Linting di un Dockerfile con un workflow di GitHub