Eventi
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Esegui registrazioneQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
Il codice può essere instrumentato per produrre un log, che funge da record di eventi interessanti che si sono verificati durante l'esecuzione del programma. Per comprendere il comportamento dell'applicazione, è possibile esaminare i log. .NET ha accumulato diverse API di registrazione nella cronologia e questo articolo consente di comprendere quali opzioni sono disponibili.
Nota
A volte, la registrazione viene definita anche "traccia", inclusa in alcune delle API di Windows e .NET meno recenti. Negli ultimi anni, la "traccia" è più comunemente usata come abbreviazione per la traccia distribuita, ma questo non è il significato descritto in questo articolo.
Per la maggior parte dei casi, se si aggiunge la registrazione a un progetto esistente o si crea un nuovo progetto, l'infrastruttura ILogger è una scelta predefinita ottimale. ILogger
Supporta la registrazione strutturata veloce, la configurazione flessibile e una raccolta di sink comuni, inclusa la console, che è ciò che viene visualizzato durante l'esecuzione di un'app ASP.NET. Inoltre, l'interfaccia ILogger
può fungere anche da facciata su molte implementazioni di registrazione di terze parti che offrono funzionalità avanzate ed estendibilità.
ILogger fornisce il brano di registrazione per l'implementazione di OpenTelemetry per .NET, che consente l'uscita dei log dall'applicazione a un'ampia gamma di sistemi APM per un'ulteriore analisi.
EventSource è un'API meno recente e ad alte prestazioni con registrazione strutturata. Originariamente è stata progettata per integrarsi bene con Event Tracing for Windows (ETW), ma è stata successivamente estesa per supportare la traccia multipiattaforma EventPipe e EventListener per sink personalizzati. In confronto a ILogger
, EventSource
ha relativamente pochi sink di registrazione predefiniti, e non c'è un supporto integrato per la configurazione tramite file di configurazione separati. EventSource
è eccellente se si vuole un maggiore controllo sull'integrazione ETW o EventPipe, ma per la registrazione per utilizzo generico, ILogger
è più flessibile e più facile da usare.
System.Diagnostics.Trace e System.Diagnostics.Debug sono .API di registrazione meno recenti di .NET. Queste classi dispongono di API di configurazione flessibili e di un ampio ecosistema di sink, ma supportano solo la registrazione non strutturata. In .NET Framework, possono essere configurati tramite un file app.config, ma in .NET Core non esiste un meccanismo di configurazione integrato basato su file. Vengono in genere usati per produrre output di diagnostica per lo sviluppatore durante l'esecuzione nel debugger. Il team .NET continua a supportare queste API per scopi di compatibilità con le versioni precedenti, ma non verrà aggiunta alcuna nuova funzionalità. Queste API sono una scelta ottimale per le applicazioni che le usano già. Per le app più recenti che non hanno già eseguito il commit in un'API di registrazione, ILogger
possono offrire funzionalità migliori.
La classe System.Console include i metodi Write e WriteLine che possono essere usati in scenari di registrazione semplici. Queste API sono molto facili da iniziare a usare, ma la soluzione non sarà flessibile come un'API di registrazione per utilizzo generico. La console consente solo la registrazione non strutturata e non è disponibile alcun supporto di configurazione per selezionare i messaggi di log abilitati o per il reindirizzamento a un sink diverso. L'uso delle API ILogger o Trace con un sink della console non richiede molto lavoro aggiuntivo e mantiene la registrazione configurabile.
System.Diagnostics.DiagnosticSource è destinato alla registrazione in cui i messaggi di log verranno analizzati in modo sincrono in-process anziché serializzati in qualsiasi risorsa di archiviazione. Ciò consente all'origine e al listener di scambiare oggetti .NET arbitrari come messaggi, mentre la maggior parte delle API di registrazione richiede che l'evento di log sia serializzabile. Questa tecnica può anche essere estremamente veloce, gestendo gli eventi di log in decine di nanosecondi se il listener viene implementato in modo efficiente. Gli strumenti che usano queste API spesso agiscono più come profiler in-process, anche se qui l'API non impone alcun vincolo.
System.Diagnostics.EventLog è un'API di Windows che scrive i messaggi nel Registro eventi di Windows. In molti casi, l'uso di ILogger con un sink EventLog facoltativo durante l'esecuzione in Windows può offrire funzionalità simili senza associare strettamente l'app al sistema operativo Windows.
La registrazione può essere strutturata o non strutturata:
Le API di registrazione strutturate valide possono offrire maggiore funzionalità e prestazioni con un piccolo aumento della complessità dell'utilizzo.
La maggior parte delle API di registrazione consente l'invio dei messaggi di log a destinazioni diverse denominate sink. Alcune API hanno un numero elevato di sink pre-creati, mentre altri ne hanno solo alcuni. Se non esiste alcun sink predefinito, in genere esiste un'API di estendibilità che consente di creare un sink personalizzato, anche se ciò richiede la scrittura di un po' più di codice.
Feedback su .NET
.NET è un progetto open source. Seleziona un collegamento per fornire feedback:
Eventi
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Esegui registrazioneTraining
Modulo
Acquisire i registri applicazioni Web con la registrazione diagnostica del servizio app - Training
Informazioni su come acquisire l'output di traccia dalle app Web di Azure. Visualizzare un flusso di registrazione live e scaricare i file di log per l'analisi offline.
Documentazione
DiagnosticSource e DiagnosticListener - .NET
Panoramica di DiagnosticSource/DiagnosticListener, incluse indicazioni sulla registrazione di eventi, strumentazione del codice e utilizzo dei dati.
Aggiungere strumentazione di traccia distribuita - .NET
Esercitazione per instrumentare le tracce distribuite nelle applicazioni .NET
Osservabilità di .NET con OpenTelemetry - .NET
Introduzione all'osservazione delle app .NET con OpenTelemetry