Esplorare i log di traccia .NET/.NET Core e Python in Application Insights

Inviare i log di tracce diagnostiche per l'applicazione ASP.NET/ASP.NET Core da ILogger, NLog, log4Net o System.Diagnostics.Trace ad Azure Application Insights. Per le applicazioni Python, inviare i log di traccia diagnostica usando AzureLogHandler in OpenCensus Python per Monitoraggio di Azure. È quindi possibile esplorarli e cercarli. Questi log vengono uniti agli altri file di log dell'applicazione. È possibile usarle per identificare le tracce associate a ogni richiesta dell'utente e correlarle con altri eventi ed eccezioni.

Nota

Può essere necessario un modulo di acquisizione dei log. Si tratta di un adattatore utile per i logger di terze parti. Tuttavia, se non si usa già NLog, log4Net o System.Diagnostics.Trace, è consigliabile chiamare direttamente Application Insights TrackTrace().

Nota

Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento di chiavi di strumentazione continuerà a funzionare, ma non forniamo più aggiornamenti o supporto per la funzionalità. Passare alle stringa di connessione per sfruttare le nuove funzionalità.

Installare la registrazione nell'applicazione

Installare il framework di registrazione scelto nel progetto, che dovrebbe generare una voce in app.config o web.config.

 <configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Configurare Application Insights per la raccolta dei log

Se non è ancora stato fatto, aggiungere Application Insights al progetto ed è disponibile un'opzione per includere l'agente di raccolta log.

In alternativa, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e scegliere Configura Application Insights. Selezionare l'opzione Configure trace collection (Configura raccolta delle tracce).

Nota

È possibile che il menu di Application Insights o l'opzione di raccolta dei log non sia presente. 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, se si tratta di un progetto desktop di Windows.

  1. Se si prevede di 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 uno dei pacchetti seguenti:

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

ILogger

Per alcuni esempi d'uso dell'implementazione ILogger di Application Insights con applicazioni console e ASP.NET Core, vedere ApplicationInsightsLoggerProvider per i log ILogger di .NET Core.

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, usare:

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

Usare gli eventi di 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: Critical, Error, Informational, LogAlways, Verbose o Warning.
  • Keywords (facoltativo) specifica il valore intero di combinazioni di parole chiave da usare.

Usare gli eventi di DiagnosticSource

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

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

Per ogni origine di diagnostica da tracciare, aggiungere una voce con l'attributo impostato sul nome dell'origine Name di diagnostica.

Usare gli eventi ETW

È possibile configurare gli eventi di Event Trace for Windows (ETW) in modo che vengano inviati ad Application Insights come tracce. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.EtwCollector. Modificare quindi 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 del gruppo Performance Log Users o Administrators.

    <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 in sostituzione di ProviderName.
  • Level imposta il livello di registrazione da raccogliere. Può essere impostato su Critical, Error, Informational, LogAlways, Verbose o Warning.
  • Keywords (facoltativo) imposta il valore intero di combinazioni di parole chiave da usare.

Usare l'API di traccia direttamente

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

Ad esempio:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.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à. Inoltre, come per altri tipi di dati di telemetria, è possibile aggiungere valori di proprietà utili per filtrare o cercare set diversi di tracce. Ad esempio:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
                            SeverityLevel.Warning,
                            new Dictionary<string, string> { { "database", "db.ID" } });

È ora possibile filtrare facilmente in Ricerca transazioni tutti i messaggi di un particolare livello di gravità correlato a un determinato database.

AzureLogHandler per OpenCensus Python

Il gestore log di Monitoraggio di Azure consente di esportare i log di Python in Monitoraggio di Azure.

Instrumentare l'applicazione con l'SDK OpenCensus Python per Monitoraggio di Azure.

Questo esempio illustra come inviare un log del livello di avviso a Monitoraggio di Azure.

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')

Esplorare i log

Eseguire l'app in modalità debug o distribuirla in modalità live.

Nel riquadro di panoramica dell'app nel portale di Application Insights selezionare Ricerca transazioni.

Ad esempio, è possibile:

  • Filtrare in base a tracce di log o elementi con proprietà specifiche.
  • Esaminare un elemento specifico in modo dettagliato
  • Trovare altri dati di log di sistema correlati alla stessa richiesta utente (con lo stesso ID operazione).
  • Salvare la configurazione di una pagina come preferita.

Nota

Se l'applicazione invia molti dati e si usa Application Insights SDK per ASP.NET versione 2.0.0-beta3 o successiva, la funzionalità di campionamento adattivo potrebbe funzionare e inviare solo una parte dei dati di telemetria. Altre informazioni sul campionamento.

Risoluzione dei problemi

Risposte a domande comuni.

Cosa causa la telemetria ritardata, una rete in overload e una trasmissione inefficiente?

System.Diagnostics.Tracing include una funzionalità autoflush. Questa funzionalità causa lo scaricamento dell'SDK con ogni elemento di telemetria, indesiderato e può causare problemi di scheda di registrazione, ad esempio dati di telemetria ritardati, una rete in overload e una trasmissione inefficiente.

Come procedere per Java?

Nella strumentazione senza codice Java, consigliata, i log vengono raccolti automaticamente. Usare l'agente Java 3.0.

L'agente Java di Application Insights raccoglie i log da Log4j, Logback e java.util.logging out of the box.

Perché non è disponibile alcuna opzione di Application Insights nel menu di scelta rapida del progetto?

  • Verificare che Developer Analytics Tools sia installato nel computer di sviluppo. In Visual Studio passare a Strumenti>Estensioni e Aggiornamenti e cercare Strumenti di analisi per sviluppatori. Se non è presente nella scheda Installati, aprire la scheda Online e installarlo.
  • Questo tipo di progetto potrebbe essere uno che gli strumenti di analisi degli sviluppatori non supportano. Usare l' installazione manuale.

Perché non è disponibile alcuna opzione di adattatore di log nello strumento di configurazione?

  • Installare prima il framework di registrazione.
  • Se si usa System.Diagnostics.Trace, assicurarsi di averla configurata in web.config.
  • Assicurarsi di avere la versione più recente di Application Insights. In Visual Studio passare a Strumenti>Estensioni e Aggiornamenti e aprire la scheda Aggiornamenti. Se gli strumenti di analisi per sviluppatori sono presenti, selezionarlo per aggiornarlo.

Perché viene visualizzato il messaggio di errore "La chiave di strumentazione non può essere vuota"?

Probabilmente è stato installato il pacchetto NuGet dell'adattatore di registrazione senza installare Application Insights. In Esplora soluzioni fare clic con il pulsante destro del mouse su ApplicationInsights.config e scegliere Aggiorna Application Insights. Viene richiesto di accedere ad Azure e creare una risorsa di Application Insights o di riutilizzare una risorsa esistente. Dovrebbe risolvere il problema.

Può essere necessario qualche minuto prima che tutti gli eventi e le richieste abbiano superato la pipeline.

Quanti dati vengono conservati?

La quantità di dati mantenuti dipende da diversi fattori. Per altre informazioni, vedere la sezione Limiti della pagina delle metriche degli eventi del cliente.

Perché non vengono visualizzate alcune voci di log previste?

Ad esempio, l'applicazione invia quantità voluminose di dati e si usa Application Insights SDK per ASP.NET versione 2.0.0-beta3 o successiva. In questo caso, la funzionalità di campionamento adattivo potrebbe funzionare e inviare solo una parte dei dati di telemetria. Altre informazioni sul campionamento.

Passaggi successivi