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 ed eseguire ricerche al loro interno. Questi log vengono uniti agli altri file di log dell'applicazione. È possibile usarli per identificare le tracce associate a ogni richiesta dell'utente e correlarle ad altri eventi e report sulle eccezioni.

Nota

Può essere necessario un modulo di acquisizione dei log. Si tratta di un adattatore utile per i logger di terze parti. Se tuttavia non è già in uso NLog, log4Net o System.Diagnostics.Trace, è opportuno chiamare direttamente TrackTrace() di Application Insights.

Nota

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

Installare la registrazione nell'applicazione

Installare il framework di registrazione scelto nel progetto. Viene generata una voce corrispondente 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

Aggiungere Application Insights al progetto se non è ancora stato fatto 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 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.
  • Livello specifica il livello di registrazione da raccogliere: Critico, Errore, Informazioni, Registra sempre, Dettagliato o Avviso.
  • 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 Name impostato sul nome dell'origine 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 è la possibilità di 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" } });

In questo modo, è possibile filtrare facilmente in Ricerca transazioni tutti i messaggi con un determinato livello di gravità relativi a un database specifico.

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 del registro di sistema relativi 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 essere attiva e inviare solo una parte dei dati di telemetria. Altre informazioni sul campionamento.

Risoluzione dei problemi

Risposte a domande comuni.

Cosa causa il ritardo dei dati di telemetria, una rete sovraccaricata e una trasmissione inefficiente?

System.Diagnostics.Tracing dispone di una funzionalità di scaricamento automatico. Questa funzionalità causa lo scaricamento dell'SDK con ogni elemento di telemetria, un comportamento indesiderato che può causare problemi dell'adattatore di registrazione, ad esempio dati di telemetria ritardati, una rete sovraccaricata e una trasmissione inefficiente.

Come procedere per Java?

Nella strumentazione senza codice Java (scelta consigliata) i log vengono raccolti per impostazione predefinita. Usare l'agente Java 3.0.

L'agente Java di Application Insights raccoglie i log da Log4j, Logback e java.util.logging per impostazione predefinita.

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 Developer Analytics Tools. Se non è presente nella scheda Installati, aprire la scheda Online e installarlo.
  • Può trattarsi di un tipo di progetto che Developer Analytics Tools non supporta. Usare l' installazione manuale.

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

  • Installare prima il framework di registrazione.
  • Se si usa System.Diagnostics.Trace, assicurarsi di averlo configurato 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 Developer Analytics Tools è presente, selezionarlo per eseguire l'aggiornamento.

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

È probabile che sia 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. Verrà richiesto di accedere ad Azure e creare una risorsa Application Insights o di riutilizzarne una esistente. In questo modo il problema dovrebbe essere risolto.

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?

Forse l'applicazione invia notevoli quantità di dati ed è in uso Application Insights SDK per ASP.NET versione 2.0.0-beta3 o successive. In questo casso, la funzionalità di campionamento adattivo potrebbe essere attiva e inviare solo una parte dei dati di telemetria. Altre informazioni sul campionamento.

Passaggi successivi