Utforska spårningsloggar för .NET/.NET Core och Python i Application Insights

Skicka diagnostikspårningsloggar för ditt ASP.NET/ASP.NET Core-program från ILogger, NLog, log4Net eller System.Diagnostics.Trace till Azure Application Insights. För Python-program skickar du diagnostikspårningsloggar med hjälp av AzureLogHandler i OpenCensus Python för Azure Monitor. Du kan sedan utforska och söka efter dem. Dessa loggar sammanfogas med de andra loggfilerna från ditt program. Du kan använda dem för att identifiera spårningar som är associerade med varje användarbegäran och korrelera dem med andra händelser och undantagsrapporter.

Kommentar

Behöver du modulen log-capture? Det är ett användbart kort för tredjepartsloggare. Men om du inte redan använder NLog, log4Net eller System.Diagnostics.Trace kan du anropa Application Insights TrackTrace() direkt.

Kommentar

Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträng för att dra nytta av nya funktioner.

Installera loggning på din app

Installera det valda loggningsramverket i projektet, vilket bör resultera i en post i app.config eller web.config.

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

Konfigurera Application Insights för att samla in loggar

Lägg till Application Insights i projektet om du inte har gjort det ännu och det finns ett alternativ för att inkludera logginsamlaren.

Eller högerklicka på projektet i Solution Explorer för att konfigurera Application Insights. Välj alternativet Konfigurera spårningssamling.

Kommentar

Finns det ingen Application Insights-meny eller ett alternativ för logginsamlare? Prova att felsöka.

Manuell installation

Använd den här metoden om projekttypen inte stöds av Installationsprogrammet för Application Insights. Om det till exempel är ett Windows-skrivbordsprojekt.

  1. Om du planerar att använda log4net eller NLog installerar du det i projektet.

  2. Högerklicka på projektet i Solution Explorer och välj Hantera NuGet-paket.

  3. Sök efter Application Insights.

  4. Välj något av följande paket:

NuGet-paketet installerar nödvändiga sammansättningar och ändrar web.config eller app.config om det är tillämpligt.

ILogger

Exempel på hur du använder Application Insights ILogger-implementeringen med konsolprogram och ASP.NET Core finns i ApplicationInsightsLoggerProvider för .NET Core ILogger-loggar.

Infoga diagnostiklogganrop

Om du använder System.Diagnostics.Trace är ett vanligt anrop:

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

Om du föredrar log4net eller NLog använder du:

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

Använda EventSource-händelser

Du kan konfigurera System.Diagnostics.Tracing.EventSource-händelser som ska skickas till Application Insights som spårningar. Microsoft.ApplicationInsights.EventSourceListener Installera först NuGet-paketet. TelemetryModules Redigera sedan avsnittet i applicationinsights.config-filen.

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

För varje källa kan du ange följande parametrar:

  • Namnet anger namnet på den EventSource som ska samlas in.
  • Nivån anger loggningsnivån som ska samlas in: Kritisk, Fel, Information, LogAlways, Utförlig eller Varning.
  • Nyckelord (valfritt) anger heltalsvärdet för nyckelordskombinationer som ska användas.

Använda DiagnosticSource-händelser

Du kan konfigurera System.Diagnostics.DiagnosticSource-händelser som ska skickas till Application Insights som spårningar. Microsoft.ApplicationInsights.DiagnosticSourceListener Installera först NuGet-paketet. Redigera sedan avsnittet "TelemetryModules" i filen ApplicationInsights.config .

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

För varje diagnostikkälla som du vill spåra lägger du till en post med Name attributet inställt på namnet på diagnostikkällan.

Använda ETW-händelser

Du kan konfigurera händelsespårning för Windows-händelser (ETW) som ska skickas till Application Insights som spårningar. Microsoft.ApplicationInsights.EtwCollector Installera först NuGet-paketet. Redigera sedan avsnittet "TelemetryModules" i filen ApplicationInsights.config .

Kommentar

ETW-händelser kan bara samlas in om processen som är värd för SDK:t körs under en identitet som är medlem i användare eller administratörer för prestandaloggar.

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

För varje källa kan du ange följande parametrar:

  • ProviderName är namnet på den ETW-provider som ska samlas in.
  • ProviderGuid anger GUID för ETW-providern som ska samlas in. Den kan användas i stället för ProviderName.
  • Nivå anger loggningsnivån som ska samlas in. Det kan vara Kritisk, Fel, Information, LogAlways, Utförlig eller Varning.
  • Nyckelord (valfritt) anger heltalsvärdet för nyckelordskombinationer som ska användas.

Använd spårnings-API:et direkt

Du kan anropa Application Insights-spårnings-API:et direkt. Loggningskorten använder det här API:et.

Till exempel:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");

En fördel TrackTrace med är att du kan placera relativt långa data i meddelandet. Du kan till exempel koda POST-data där.

Du kan också lägga till en allvarlighetsgrad i meddelandet. Och precis som andra telemetrier kan du lägga till egenskapsvärden för att filtrera eller söka efter olika uppsättningar spårningar. Till exempel:

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

Nu kan du enkelt filtrera bort alla meddelanden på en viss allvarlighetsnivå som är relaterade till en viss databas i Transaktionssökning .

AzureLogHandler för OpenCensus Python

Med Azure Monitor Log Handler kan du exportera Python-loggar till Azure Monitor.

Instrumentera ditt program med OpenCensus Python SDK för Azure Monitor.

Det här exemplet visar hur du skickar en varningsnivålogg till Azure Monitor.

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!')

Utforska loggarna

Kör appen i felsökningsläge eller distribuera den live.

I appens översiktsfönster i Application Insights-portalen väljer du Transaktionssökning.

Du kan till exempel:

  • Filtrera på loggspårningar eller på objekt med specifika egenskaper.
  • Granska ett specifikt objekt i detalj.
  • Hitta andra systemloggdata som relaterar till samma användarbegäran (har samma åtgärds-ID).
  • Spara konfigurationen av en sida som en favorit.

Kommentar

Om ditt program skickar mycket data och du använder Application Insights SDK för ASP.NET version 2.0.0-beta3 eller senare kan funktionen för anpassningsbar sampling fungera och endast skicka en del av telemetrin. Läs mer om sampling.

Felsökning

Få svar på vanliga frågor.

Vad orsakar fördröjd telemetri, ett överbelastat nätverk och ineffektiv överföring?

System.Diagnostics.Tracing har en autoflush-funktion. Den här funktionen gör att SDK rensas med varje telemetriobjekt, vilket är oönskat, och kan orsaka problem med loggningskort som fördröjd telemetri, ett överbelastat nätverk och ineffektiv överföring.

Hur gör jag för att göra detta för Java?

I kodlös Java-instrumentation, vilket rekommenderas, samlas loggarna in direkt. Använd Java 3.0-agenten.

Application Insights Java-agenten samlar in loggar från Log4j, Logback och java.util.logging direkt.

Varför finns det inget Application Insights-alternativ på projektkontextmenyn?

  • Kontrollera att Developer Analytics Tools är installerat på utvecklingsdatorn. I Visual Studio går du till Verktygstillägg>och Uppdateringar och letar efter verktyg för utvecklaranalys. Om den inte finns på fliken Installerad öppnar du fliken Online och installerar den.
  • Den här projekttypen kan vara en projekttyp som Utvecklaranalysverktyg inte stöder. Använd manuell installation.

Varför finns det inget loggkortsalternativ i konfigurationsverktyget?

  • Installera loggningsramverket först.
  • Om du använder System.Diagnostics.Trace kontrollerar du att du har konfigurerat det i web.config.
  • Kontrollera att du har den senaste versionen av Application Insights. I Visual Studio går du till Verktygstillägg>och Uppdateringar och öppnar fliken Uppdateringar. Om Developer Analytics Tools finns där väljer du det för att uppdatera det.

Varför får jag felmeddelandet "Instrumentationsnyckeln får inte vara tom"?

Du har förmodligen installerat nuGet-paketet för loggningskortet utan att installera Application Insights. Högerklicka på ApplicationInsights.config i Solution Explorer och välj Uppdatera Application Insights. Du uppmanas att logga in på Azure och skapa en Application Insights-resurs eller återanvända en befintlig resurs. Det bör åtgärda problemet.

Det kan ta ett tag innan alla händelser och begäranden kommer igenom pipelinen.

Hur mycket data behålls?

Flera faktorer påverkar mängden data som behålls. Mer information finns i avsnittet Gränser på sidan för kundhändelsemått.

Varför ser jag inte några loggposter som jag förväntade mig?

Ditt program kanske skickar stora mängder data och du använder Application Insights SDK för ASP.NET version 2.0.0-beta3 eller senare. I det här fallet kan funktionen för anpassningsbar sampling fungera och endast skicka en del av telemetrin. Läs mer om sampling.

Nästa steg