Esplorare i log di traccia .NET in Application Insights

Se si usa NLog, log4Net o System.Diagnostics.Trace per l'analisi diagnostica nell'applicazione ASP.NET, è possibile fare in modo che i log vengano inviati a Application Insights di Azure, dove è possibile esplorarli ed eseguirvi ricerche. I log verranno uniti con gli altri eventi di telemetria provenienti dall'applicazione, in modo da potere identificare le tracce associate alla gestione di ogni richiesta dell'utente e metterle in correlazione con altri eventi e i report di eccezioni.

Nota

Se è necessario un modulo di acquisizione dei log, questo adattatore è utile per i logger terze parti, ma se NLog, log4Net o System.Diagnostics.Trace non sono già in uso, chiamare direttamente TrackTrace() di Application Insights.

Installare la registrazione nell'applicazione

Installare il framework di registrazione scelto nel progetto. Verrà inserita una voce nel file app.config o web.config.

Se si usa System.Diagnostics.Trace, è necessario aggiungere una voce a web.config:


    <configuration>
     <system.diagnostics>
       <trace autoflush="false" indentsize="4">
         <listeners>
           <add name="myListener"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="TextWriterOutput.log" />
           <remove name="Default" />
         </listeners>
       </trace>
     </system.diagnostics>
   </configuration>

Configurare Application Insights per la raccolta dei log

Se non è ancora stato fatto, aggiungere Application Insights al progetto. Verrà visualizzata un'opzione per includere la raccolta dei log.

In alternativa, configurare Application Insights facendo clic con il pulsante destro del mouse in Esplora soluzioni. Selezionare l'opzione per configurare la raccolta delle tracce.

Il menu di Application Insights o l'opzione di raccolta non viene visualizzata? Vedere Risoluzione dei problemi.

Installazione manuale

Usare questo metodo se il tipo di progetto non è supportato dal programma di installazione di Application Insights, ad esempio un progetto Desktop di Windows.

  1. Se si intende usare log4Net o NLog, installarlo nel progetto.
  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet.
  3. Cercare "Application Insights"
  4. Selezionare il pacchetto appropriato tra:

    • Microsoft.ApplicationInsights.TraceListener (per acquisire le chiamate System.Diagnostics.Trace)
    • Microsoft.ApplicationInsights.EventSourceListener, per acquisire gli eventi EventSource
    • Microsoft.ApplicationInsights.EtwListener, per acquisire gli eventi ETW
    • Microsoft.ApplicationInsights.NLogTarget
    • Microsoft.ApplicationInsights.Log4NetAppender

Il pacchetto NuGet installa gli assembly necessari e modifica inoltre web.config o app.config.

Inserire chiamate di log di diagnostica

Se si usa System.Diagnostics.Trace, una tipica chiamata sarà simile alla seguente:

System.Diagnostics.Trace.TraceWarning("Slow response - database01");

Se si preferisce log4net o NLog:

logger.Warn("Slow response - database01");

Uso degli eventi EventSource

È possibile configurare eventi System.Diagnostics.Tracing.EventSource da inviare ad Application Insights come tracce. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.EventSourceListener. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
      <Sources>
        <Add Name="MyCompany" Level="Verbose" />
      </Sources>
    </Add>

Per ogni origine è possibile impostare i parametri seguenti:

  • Name specifica il nome di EventSource da raccogliere.
  • Level specifica il livello di registrazione da raccogliere. Può essere uno tra Critical, Error, Informational, LogAlways, Verbose, Warning.
  • Keywords è facoltativo e specifica il valore intero di combinazioni di parole chiave da usare.

Uso degli eventi DiagnosticSource

È possibile configurare eventi System.Diagnostics.DiagnosticSource da inviare ad Application Insights come tracce. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.

    <Add Type="Microsoft.ApplicationInsights.DiagnsoticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
      <Sources>
        <Add Name="MyDiagnosticSourceName" />
      </Sources>
    </Add>

Per ogni DiagnosticSource che si desidera tracciare, aggiungere una voce con l'attributo Name impostato sul nome di DiagnosticSource.

Uso degli eventi ETW

È possibile configurare eventi ETW da inviare ad Application Insights come tracce. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.EtwCollector. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.

Nota

Gli eventi ETW possono essere raccolti solo se il processo che ospita l'SDK viene eseguito in un'identità che è membro di "Performance Log Users" o amministratori.

    <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
      <Sources>
        <Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
      </Sources>
    </Add>

Per ogni origine è possibile impostare i parametri seguenti:

  • ProviderName è il nome del provider ETW da raccogliere.
  • ProviderGuid specifica il GUID del provider ETW da raccogliere, può essere usato al posto di ProviderName.
  • Level imposta il livello di registrazione da raccogliere. Può essere uno tra Critical, Error, Informational, LogAlways, Verbose, Warning.
  • Keywords è facoltativo e imposta il valore intero di combinazioni di parole chiave da usare.

Uso diretto dell'API di traccia

È possibile chiamare direttamente l'API di traccia di Application Insights. Gli adattatori di registrazione usano questa API.

Ad esempio:

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow response - database01");

Un vantaggio di TrackTrace è che è possibile inserire dati relativamente lunghi nel messaggio. Ad esempio, è possibile codificare dati POST.

È anche possibile aggiungere al messaggio un livello di gravità. E come per altri tipi di dati di telemetria, si possono aggiungere valori di proprietà che è possibile usare per filtrare o cercare set di tracce diversi, Ad esempio:

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow database response",
               SeverityLevel.Warning,
               new Dictionary<string,string> { {"database", db.ID} });

Questo consentirà, in Ricerca, di filtrare facilmente tutti i messaggi di un determinato livello di gravità relativi a un database specifico.

Esplorare i log

Eseguire l'app in modalità debug o distribuirla.

Nel pannello Panoramica dell'app nel portale di Application Insights scegliere Cerca.

In Application Insights scegliere Cerca

Cerca

Ad esempio, è possibile:

  • Filtrare in base alle tracce dei log o agli elementi con proprietà specifiche
  • Esaminare un elemento specifico in modo dettagliato
  • Trovare altri eventi di telemetria relativi alla stessa richiesta dell'utente (ovvero, con lo stesso valore OperationId)
  • Salvare la configurazione di questa pagina come preferita

Nota

Campionamento. Se l'applicazione invia una grande quantità di dati e si sta utilizzando la versione 2.0.0-beta3 o versioni successive dell’SDK di Application Insights per ASP.NET, la funzionalità del campionamento adattivo può operare e inviare solo una percentuale dei dati di telemetria. Altre informazioni sul campionamento.

Passaggi successivi

Diagnosticare errori ed eccezioni in ASP.NET

Altre informazioni sulla ricerca.

Risoluzione dei problemi

Come procedere per Java?

Usare gli adattatori log Java.

Non è disponibile alcuna opzione di Application Insights nel menu di scelta rapida del progetto

  • Verificare che Strumenti Application Insights sia installato nel computer di sviluppo. In Visual Studio, scegliere Strumenti, Estensioni e Aggiornamenti e cercare Strumenti Application Insights. Se non è visualizzato nella scheda degli elementi installati, aprire la scheda Online e installarlo.
  • Potrebbe trattarsi di un tipo di progetto non supportato da Strumenti Application Insights. Usare l' installazione manuale.

Nello strumento di configurazione non è disponibile alcuna opzione per l'adattatore log

  • È necessario installare innanzitutto il framework di registrazione.
  • Se si usa System.Diagnostics.Trace, verificare di aver eseguito la configurazione in web.config.
  • Si dispone della versione più recente di Application Insights? Scegliere Estensioni e aggiornamenti dal menu Strumenti di Visual Studio e aprire la scheda Aggiornamenti. Se Developer Analytics Tools è presente, fare clic per eseguire l'aggiornamento.

Viene visualizzato l'errore: "La chiave di strumentazione non può essere vuota"

Risulta che l'utente abbia installato il pacchetto NuGet dell'adattatore di registrazione senza aver installato Application Insights.

In Esplora soluzioni fare clic con il pulsante destro del mouse su ApplicationInsights.config e scegliere Aggiorna Application Insights. Verrà visualizzata una finestra di dialogo che invita ad accedere ad Azure e a creare una risorsa di Application Insights o a riusarne una esistente. Il problema verrà in tal modo risolto.

Nella ricerca diagnostica vengono visualizzate le tracce ma non gli altri eventi

Talvolta la visualizzazione di tutti gli eventi e le richieste nella pipeline può richiedere un po' di tempo.

Quanti dati vengono conservati?

Diversi fattori influiscono sulla quantità di dati mantenuti. Per altre informazioni, vedere la sezione dei limiti della pagina delle metriche degli eventi dei clienti.

Non è possibile vedere alcune delle voci di log previste

Se l'applicazione invia una grande quantità di dati e si sta utilizzando la versione 2.0.0-beta3 o versioni successive dell’SDK di Application Insights per ASP.NET, la funzionalità del campionamento adattivo può operare e inviare solo una percentuale dei dati di telemetria. Altre informazioni sul campionamento.

Passaggi successivi