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
Ospitare n8n su Azure App Service
Centralizzare e governare MCP server e Skill con Azure API Center
Azure SQL Database per dev: tutte le novità da non perdere
Agentic Workflows in GitHub
Esporre un server MCP esistente con Azure API Management
Creare un agente A2Acon Azure Logic Apps
How to be a DevOps engineer in the AI era
Applicare il progressive enhancement in applicazioni web
Gestione delle scrollbar dinamiche in HTML e CSS
Operazioni tra insiemi di array in Javascript
Gestire gli errori nelle Promise JavaScript con try()
Validazione personalizzata nelle Minimal API di ASP.NET Core
I più letti di oggi
- Contare le occorrenze di parole in una frase con LINQ
- Mischiare codice server side e client side in una query LINQ con Entity Framework
- Cambiare il titolo di una pagina ASP.NET con uno user control
- ASP.NET 4.5 e ASP.NET MVC 4 in C# e VB
- Esecuzione a matrici nelle pipeline YAML di Azure DevOps
- Unire liste tramite il Metodo Union di LINQ
- Mappare una relazione molti a molti via codice con Entity Framework Code-First
- Utilizzare i DataTrigger e ControlStoryboardAction per animare una cella di un DataGrid in Silverlight
- Parallelizzare il download di pagine web tramite la Task Parallel Library di .NET Framework 4.0


