Esplorare i log di traccia .NET in Application InsightsExplore .NET trace logs 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.If you use NLog, log4Net or System.Diagnostics.Trace for diagnostic tracing in your ASP.NET application, you can have your logs sent to Azure Application Insights, where you can explore and search them. 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.Your logs will be merged with the other telemetry coming from your application, so that you can identify the traces associated with servicing each user request, and correlate them with other events and exception reports.

Nota

Se è necessario un modulo di acquisizione dei log,Do you need the log capture module? 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.It's a useful adapter for 3rd-party loggers, but if you aren't already using NLog, log4Net or System.Diagnostics.Trace, consider just calling Application Insights TrackTrace() directly.

Installare la registrazione nell'applicazioneInstall logging on your app

Installare il framework di registrazione scelto nel progetto.Install your chosen logging framework in your project. Verrà inserita una voce nel file app.config o web.config.This should result in an entry in app.config or web.config.

Se si usa System.Diagnostics.Trace, è necessario aggiungere una voce a web.config:If you're using System.Diagnostics.Trace, you need to add an entry to 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 logConfigure Application Insights to collect logs

Se non è ancora stato fatto, aggiungere Application Insights al progetto.Add Application Insights to your project if you haven't done that yet. Verrà visualizzata un'opzione per includere la raccolta dei log.You'll see an option to include the log collector.

In alternativa, configurare Application Insights facendo clic con il pulsante destro del mouse in Esplora soluzioni.Or Configure Application Insights by right-clicking your project in Solution Explorer. Selezionare l'opzione per configurare la raccolta delle tracce.Select the option to Configure trace collection.

Il menu di Application Insights o l'opzione di raccolta non viene visualizzata?No Application Insights menu or log collector option? Vedere Risoluzione dei problemi.Try Troubleshooting.

Installazione manualeManual installation

Usare questo metodo se il tipo di progetto non è supportato dal programma di installazione di Application Insights, ad esempio un progetto Desktop di Windows.Use this method if your project type isn't supported by the Application Insights installer (for example a Windows desktop project).

  1. Se si intende usare log4Net o NLog, installarlo nel progetto.If you plan to use log4Net or NLog, install it in your project.
  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet.In Solution Explorer, right-click your project and choose Manage NuGet Packages.
  3. Cercare "Application Insights"Search for "Application Insights"
  4. Selezionare il pacchetto appropriato tra:Select the appropriate package - one of:

    • Microsoft.ApplicationInsights.TraceListener (per acquisire le chiamate System.Diagnostics.Trace)Microsoft.ApplicationInsights.TraceListener (to capture System.Diagnostics.Trace calls)
    • Microsoft.ApplicationInsights.EventSourceListener, per acquisire gli eventi EventSourceMicrosoft.ApplicationInsights.EventSourceListener (to capture EventSource events)
    • Microsoft.ApplicationInsights.EtwListener, per acquisire gli eventi ETWMicrosoft.ApplicationInsights.EtwListener (to capture ETW events)
    • Microsoft.ApplicationInsights.NLogTargetMicrosoft.ApplicationInsights.NLogTarget
    • Microsoft.ApplicationInsights.Log4NetAppenderMicrosoft.ApplicationInsights.Log4NetAppender

Il pacchetto NuGet installa gli assembly necessari e modifica inoltre web.config o app.config.The NuGet package installs the necessary assemblies, and also modifies web.config or app.config.

Inserire chiamate di log di diagnosticaInsert diagnostic log calls

Se si usa System.Diagnostics.Trace, una tipica chiamata sarà simile alla seguente:If you use System.Diagnostics.Trace, a typical call would be:

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

Se si preferisce log4net o NLog:If you prefer log4net or NLog:

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

Uso degli eventi EventSourceUsing EventSource events

È possibile configurare eventi System.Diagnostics.Tracing.EventSource da inviare ad Application Insights come tracce.You can configure System.Diagnostics.Tracing.EventSource events to be sent to Application Insights as traces. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.EventSourceListener.First, install the Microsoft.ApplicationInsights.EventSourceListener NuGet package. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.Then edit TelemetryModules section of the ApplicationInsights.config file.

    <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:For each source, you can set the following parameters:

  • Name specifica il nome di EventSource da raccogliere.Name specifies the name of the EventSource to collect.
  • Level specifica il livello di registrazione da raccogliere.Level specifies the logging level to collect. Può essere uno tra Critical, Error, Informational, LogAlways, Verbose, Warning.Can be one of Critical, Error, Informational, LogAlways, Verbose, Warning.
  • Keywords è facoltativo e specifica il valore intero di combinazioni di parole chiave da usare.Keywords (Optional) specifies the integer value of keywords combinations to use.

Uso degli eventi DiagnosticSourceUsing DiagnosticSource events

È possibile configurare eventi System.Diagnostics.DiagnosticSource da inviare ad Application Insights come tracce.You can configure System.Diagnostics.DiagnosticSource events to be sent to Application Insights as traces. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener.First, install the Microsoft.ApplicationInsights.DiagnosticSourceListener NuGet package. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.Then edit the TelemetryModules section of the ApplicationInsights.config file.

    <Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.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.For each DiagnosticSource you want to trace, add an entry with the Name attribute set to the name of your DiagnosticSource.

Uso degli eventi ETWUsing ETW events

È possibile configurare eventi ETW da inviare ad Application Insights come tracce.You can configure ETW events to be sent to Application Insights as traces. Installare innanzitutto il pacchetto NuGet Microsoft.ApplicationInsights.EtwCollector.First, install the Microsoft.ApplicationInsights.EtwCollector NuGet package. Quindi modificare la sezione TelemetryModules del file ApplicationInsights.config.Then edit TelemetryModules section of the ApplicationInsights.config file.

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.ETW events can only be collected if the process hosting the SDK is running under an identity that is a member of "Performance Log Users" or 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:For each source, you can set the following parameters:

  • ProviderName è il nome del provider ETW da raccogliere.ProviderName is the name of the ETW provider to collect.
  • ProviderGuid specifica il GUID del provider ETW da raccogliere, può essere usato al posto di ProviderName.ProviderGuid specifies the GUID of the ETW provider to collect, can be used instead of ProviderName.
  • Level imposta il livello di registrazione da raccogliere.Level sets the logging level to collect. Può essere uno tra Critical, Error, Informational, LogAlways, Verbose, Warning.Can be one of Critical, Error, Informational, LogAlways, Verbose, Warning.
  • Keywords è facoltativo e imposta il valore intero di combinazioni di parole chiave da usare.Keywords (Optional) sets the integer value of keyword combinations to use.

Uso diretto dell'API di tracciaUsing the Trace API directly

È possibile chiamare direttamente l'API di traccia di Application Insights.You can call the Application Insights trace API directly. Gli adattatori di registrazione usano questa API.The logging adapters use this API.

Ad esempio: For example:

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

Un vantaggio di TrackTrace è che è possibile inserire dati relativamente lunghi nel messaggio.An advantage of TrackTrace is that you can put relatively long data in the message. Ad esempio, è possibile codificare dati POST.For example, you could encode POST data there.

È anche possibile aggiungere al messaggio un livello di gravità.In addition, you can add a severity level to your message. 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,And, like other telemetry, you can add property values that you can use to help filter or search for different sets of traces. Ad esempio: For example:

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.This would enable you, in Search, to easily filter out all the messages of a particular severity level relating to a particular database.

Esplorare i logExplore your logs

Eseguire l'app in modalità debug o distribuirla.Run your app, either in debug mode or deploy it live.

Nel pannello Panoramica dell'app nel portale di Application Insights scegliere Cerca.In your app's overview blade in the Application Insights portal, choose Search.

In Application Insights scegliere Cerca

Ricerca

Ad esempio, è possibile:You can, for example:

  • Filtrare in base alle tracce dei log o agli elementi con proprietà specificheFilter on log traces, or on items with specific properties
  • Esaminare un elemento specifico in modo dettagliatoInspect a specific item in detail.
  • Trovare altri eventi di telemetria relativi alla stessa richiesta dell'utente (ovvero, con lo stesso valore OperationId)Find other telemetry relating to the same user request (that is, with the same OperationId)
  • Salvare la configurazione di questa pagina come preferitaSave the configuration of this page as a Favorite

Nota

Campionamento.Sampling. 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.If your application sends a lot of data and you are using the Application Insights SDK for ASP.NET version 2.0.0-beta3 or later, the adaptive sampling feature may operate and send only a percentage of your telemetry. Altre informazioni sul campionamento.Learn more about sampling.

Passaggi successiviNext steps

Diagnosticare errori ed eccezioni in ASP.NETDiagnose failures and exceptions in ASP.NET

Altre informazioni sulla ricerca.Learn more about Search.

risoluzione dei problemiTroubleshooting

Come procedere per Java?How do I do this for Java?

Usare gli adattatori log Java.Use the Java log adapters.

Non è disponibile alcuna opzione di Application Insights nel menu di scelta rapida del progettoThere's no Application Insights option on the project context menu

  • Verificare che Strumenti Application Insights sia installato nel computer di sviluppo.Check Application Insights tools is installed on this development machine. In Visual Studio, scegliere Strumenti, Estensioni e Aggiornamenti e cercare Strumenti Application Insights.In Visual Studio menu Tools, Extensions and Updates, look for Application Insights Tools. Se non è visualizzato nella scheda degli elementi installati, aprire la scheda Online e installarlo.If it isn't in the Installed tab, open the Online tab and install it.
  • Potrebbe trattarsi di un tipo di progetto non supportato da Strumenti Application Insights.This might be a type of project not supported by Application Insights tools. Usare l' installazione manuale.Use manual installation.

Nello strumento di configurazione non è disponibile alcuna opzione per l'adattatore logNo log adapter option in the configuration tool

  • È necessario installare innanzitutto il framework di registrazione.You need to install the logging framework first.
  • Se si usa System.Diagnostics.Trace, verificare di aver eseguito la configurazione in web.config.If you're using System.Diagnostics.Trace, make sure you configured it in web.config.
  • Si dispone della versione più recente di Application Insights?Have you got the latest version of 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.In Visual Studio Tools menu, choose Extensions and Updates, and open the Updates tab. If Developer Analytics tools is there, click to update it.

Viene visualizzato l'errore: "La chiave di strumentazione non può essere vuota"I get an error "Instrumentation key cannot be empty"

Risulta che l'utente abbia installato il pacchetto NuGet dell'adattatore di registrazione senza aver installato Application Insights.Looks like you installed the logging adapter Nuget package without installing Application Insights.

In Esplora soluzioni fare clic con il pulsante destro del mouse su ApplicationInsights.config e scegliere Aggiorna Application Insights.In Solution Explorer, right-click ApplicationInsights.config and choose Update 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.You'll get a dialog that invites you to sign in to Azure and either create an Application Insights resource, or re-use an existing one. Il problema verrà in tal modo risolto.That should fix it.

Nella ricerca diagnostica vengono visualizzate le tracce ma non gli altri eventiI can see traces in diagnostic search, but not the other events

Talvolta la visualizzazione di tutti gli eventi e le richieste nella pipeline può richiedere un po' di tempo.It can sometimes take a while for all the events and requests to get through the pipeline.

Quanti dati vengono conservati?How much data is retained?

Diversi fattori influiscono sulla quantità di dati mantenuti.Several factors impact the amount of data retained. Per altre informazioni, vedere la sezione dei limiti della pagina delle metriche degli eventi dei clienti.See the limits section of the customer event metrics page for more information.

Non è possibile vedere alcune delle voci di log previsteI'm not seeing some of the log entries that I expect

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.If your application sends a lot of data and you are using the Application Insights SDK for ASP.NET version 2.0.0-beta3 or later, the adaptive sampling feature may operate and send only a percentage of your telemetry. Altre informazioni sul campionamento.Learn more about sampling.

Passaggi successiviNext steps