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
Condividere una variabile tra stage in una pipeline YAML di Azure DevOps
Comunicazione realtime tra ASP.NET Core e Javascript con GraphQL
Utilizzare la deconstruction in combinazione con l'operatore rest di Javascript
Applicare filtri alla telemetria di Application Insight con ASP.NET Core
Graph API con .NET 5
Azure Kubernetes Service con .NET 5
Creare API GraphQL con ASP.NET Core e HotChocolate
Produttività con C# 9
Single Page Application con .NET 5
Utilizzare al meglio gli oggetti HTML input sfruttando i nuovi type
Eliminare i resource group vuoti di Azure via PowerShell
Utilizzare la libreria FluentValidation per validare formalmente un oggetto .NET
I più letti di oggi
- Creare report RTF avanzati con dati estratti da database
- Tile, notifiche e background task in Windows Phone 8
- Unzippare un file da uno script ASP
- Inviare e-mail utilizzando IISMail
- Elencare tutte le tabelle di un database con OpenSchema
- Formattare un'e-mail
- Speciale Mastering Entity Framework
- Presentato Visual Studio LightSwitch: sviluppo semplificato delle applicazioni tradizionali
- Speciale anteprima di Visual Studio 2015, .NET 2015 e Windows 10
- Rilasciati i developer tools per Office System