Aracılığıyla paylaş


Application Insights'ta .NET/.NET Core ve Python izleme günlüklerini keşfetme

ASP.NET/ASP.NET Core uygulamanız için ILogger, NLog, log4Net veya System.Diagnostics.Trace'den tanılama izleme günlüklerini Azure Uygulaması lication Insights'a gönderin. Python uygulamaları için, Azure İzleyici için OpenCensus Python'da AzureLogHandler kullanarak tanılama izleme günlükleri gönderin. Daha sonra bunları keşfedebilir ve arayabilirsiniz. Bu günlükler, uygulamanızdaki diğer günlük dosyalarıyla birleştirilir. Bunları, her kullanıcı isteğiyle ilişkili izlemeleri tanımlamak ve bunları diğer olaylar ve özel durum raporlarıyla ilişkilendirmek için kullanabilirsiniz.

Not

Günlük yakalama modülüne ihtiyacınız var mı? Üçüncü taraf günlükçüler için kullanışlı bir bağdaştırıcıdır. Ancak henüz NLog, log4Net veya System.Diagnostics.Trace kullanmıyorsanız Application Insights TrackTrace() öğesini doğrudan çağırmayı göz önünde bulundurun.

Not

31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.

Uygulamanıza günlük kaydı yükleme

Seçtiğiniz günlük çerçevesini projenize yükleyin; bu, app.config veya web.config içinde bir girişe neden olmalıdır.

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

Application Insights'ı günlükleri toplayacak şekilde yapılandırma

Bunu henüz yapmadıysanız ve günlük toplayıcıyı dahil etme seçeneği varsa projenize Application Insights ekleyin.

Veya application insights'ı yapılandırmak için Çözüm Gezgini'de projenize sağ tıklayın. İzleme koleksiyonunu yapılandır seçeneğini belirleyin.

Not

Application Insights menüsü veya günlük toplayıcı seçeneği yok mu? Sorun gidermeyi deneyin.

El ile yükleme

Proje türünüz Application Insights yükleyicisi tarafından desteklenmiyorsa bu yöntemi kullanın. Örneğin, bu bir Windows masaüstü projesiyse.

  1. log4net veya NLog kullanmayı planlıyorsanız projenize yükleyin.

  2. Çözüm Gezgini'da projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.

  3. Application Insights için arama.

  4. Aşağıdaki paketlerden birini seçin:

NuGet paketi gerekli derlemeleri yükler ve varsa web.config veya app.config dosyasını değiştirir.

ILogger

Application Insights ILogger uygulamasını konsol uygulamaları ve ASP.NET Core ile kullanma örnekleri için bkz . .NET Core ILogger günlükleri için ApplicationInsightsLoggerProvider.

Tanılama günlüğü çağrıları ekleme

System.Diagnostics.Trace kullanıyorsanız, tipik bir çağrı şöyle olabilir:

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

log4net veya NLog'ı tercih ediyorsanız şunu kullanın:

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

EventSource olaylarını kullanma

Application Insights'a izleme olarak gönderilecek System.Diagnostics.Tracing.EventSource olaylarını yapılandırabilirsiniz. İlk olarak NuGet paketini yükleyin Microsoft.ApplicationInsights.EventSourceListener . Ardından ApplicationInsights.config dosyasının bölümünü düzenleyinTelemetryModules.

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

Her kaynak için aşağıdaki parametreleri ayarlayabilirsiniz:

  • Ad , toplayacak EventSource'un adını belirtir.
  • Düzey , toplayacak günlük düzeyini belirtir: Kritik, Hata, Bilgilendirme, LogAlways, Ayrıntılı veya Uyarı.
  • Anahtar sözcükler (isteğe bağlı) kullanılacak anahtar sözcük bileşimlerinin tamsayı değerini belirtir.

DiagnosticSource olaylarını kullanma

Application Insights'a izleme olarak gönderilecek System.Diagnostics.DiagnosticSource olaylarını yapılandırabilirsiniz. İlk olarak NuGet paketini yükleyin Microsoft.ApplicationInsights.DiagnosticSourceListener . Ardından ApplicationInsights.config dosyasının "TelemetryModules" bölümünü düzenleyin.

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

İzlemek istediğiniz her tanılama kaynağı için, tanılama kaynağınızın adına özniteliği ayarlanmış bir girdi Name ekleyin.

ETW olaylarını kullanma

İzleme olarak Application Insights'a gönderilecek Windows için Olay İzleme (ETW) olaylarını yapılandırabilirsiniz. İlk olarak NuGet paketini yükleyin Microsoft.ApplicationInsights.EtwCollector . Ardından ApplicationInsights.config dosyasının "TelemetryModules" bölümünü düzenleyin.

Not

ETW olayları yalnızca SDK'yi barındıran işlem Performans Günlüğü Kullanıcıları veya Yöneticileri'nin üyesi olan bir kimlik altında çalışıyorsa toplanabilir.

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

Her kaynak için aşağıdaki parametreleri ayarlayabilirsiniz:

  • ProviderName , toplayacak ETW sağlayıcısının adıdır.
  • ProviderGuid , toplayacak ETW sağlayıcısının GUID'sini belirtir. yerine ProviderNamekullanılabilir.
  • Düzey , toplayacak günlük düzeyini ayarlar. Kritik, Hata, Bilgilendirme, LogAlways, Ayrıntılı veya Uyarı olabilir.
  • Anahtar sözcükler (isteğe bağlı) kullanılacak anahtar sözcük bileşimlerinin tamsayı değerini ayarlar.

İzleme API'sini doğrudan kullanma

Application Insights izleme API'sini doğrudan çağırabilirsiniz. Günlük bağdaştırıcıları bu API'yi kullanır.

Örneğin:

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

Bunun bir avantajı TrackTrace , iletiye görece uzun veriler koyabilmenizdir. Örneğin, POST verilerini orada kodlayabilirsiniz.

İletinize bir önem düzeyi de ekleyebilirsiniz. Ayrıca, diğer telemetrilerde olduğu gibi, farklı izleme kümelerini filtrelemeye veya aramaya yardımcı olmak için özellik değerleri ekleyebilirsiniz. Örneğin:

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

Artık İşlem Arama'da belirli bir veritabanıyla ilgili belirli bir önem düzeyindeki tüm iletileri kolayca filtreleyebilirsiniz.

OpenCensus Python için AzureLogHandler

Azure İzleyici Günlük İşleyicisi, Python günlüklerini Azure İzleyici'ye dışarı aktarmanıza olanak tanır.

Uygulamanızı Azure İzleyici için OpenCensus Python SDK'sı ile izleyin.

Bu örnekte Azure İzleyici'ye uyarı düzeyi günlüğü gönderme adımları gösterilmektedir.

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

Günlüklerinizi keşfetme

Uygulamanızı hata ayıklama modunda çalıştırın veya canlı olarak dağıtın.

Uygulamanızın Application Insights portalındaki genel bakış bölmesinde İşlem Arama'yı seçin.

Örneğin şunları yapabilirsiniz:

  • Günlük izlemelerine veya belirli özelliklere sahip öğelere filtre uygulama.
  • Belirli bir öğeyi ayrıntılı olarak inceleyin.
  • Aynı kullanıcı isteğiyle ilişkili (aynı işlem kimliğine sahip) diğer sistem günlüğü verilerini bulun.
  • Sayfanın yapılandırmasını sık kullanılan olarak kaydedin.

Not

Uygulamanız çok fazla veri gönderiyorsa ve ASP.NET sürüm 2.0.0-beta3 veya üzeri için Application Insights SDK'sını kullanıyorsanız uyarlamalı örnekleme özelliği çalışabilir ve telemetrinizin yalnızca bir bölümünü gönderebilir. Örnekleme hakkında daha fazla bilgi edinin.

Sorun giderme

Sık sorulan sorulara yanıtlar bulun.

Gecikmeli telemetrinin, aşırı yüklenmiş bir ağın ve verimsiz iletimin nedeni nedir?

System.Diagnostics.Tracing'in Autoflush özelliği vardır. Bu özellik SDK'nın istenmeyen her telemetri öğesiyle temizlemesine neden olur ve gecikmeli telemetri, aşırı yüklenmiş ağ ve verimsiz iletim gibi günlük bağdaştırıcısı sorunlarına neden olabilir.

Bunu Java için Nasıl yaparım? yapar?

Önerilen Java kodsuz izlemesinde günlükler kutudan çıkarılır. Java 3.0 aracısı kullanın.

Application Insights Java aracısı Log4j, Logback ve java.util.logging dosyasından günlükleri toplar.

Proje bağlam menüsünde neden Application Insights seçeneği yok?

  • Geliştirici Analizi Araçları'nın geliştirme makinesinde yüklü olduğundan emin olun. Visual Studio'da Araçlar>Uzantıları ve Güncelleştirmeleri'ne gidin ve Geliştirici Analizi Araçları'nı arayın. Yüklü sekmesinde değilse Çevrimiçi sekmesini açın ve yükleyin.
  • Bu proje türü, Geliştirici Analizi Araçları'nın desteklemediği bir tür olabilir. El ile yüklemeyi kullanın.

Yapılandırma aracında neden günlük bağdaştırıcısı seçeneği yok?

  • Önce günlük çerçevesini yükleyin.
  • System.Diagnostics.Trace kullanıyorsanız web.config içinde yapılandırdığınızdan emin olun.
  • Application Insights'ın en son sürümüne sahip olduğunuzdan emin olun. Visual Studio'da Araçlar>Uzantılar ve Güncelleştirmeler'e gidin ve Güncelleştirmeler sekmesini açın. Geliştirici Analizi Araçları varsa güncelleştirmek için bunu seçin.

"İzleme anahtarı boş olamaz" hata iletisini neden alıyorum?

Büyük olasılıkla Application Insights'ı yüklemeden günlük bağdaştırıcısı NuGet paketini yüklemişsinizdir. Çözüm Gezgini'de ApplicationInsights.config öğesine sağ tıklayın ve Application Insights'ı Güncelleştir'i seçin. Azure'da oturum açmanız ve bir Application Insights kaynağı oluşturmanız veya mevcut bir kaynağı yeniden kullanmanız istenir. Sorunu çözmelidir.

Tüm olayların ve isteklerin işlem hattından geçmesi biraz zaman alabilir.

Ne kadar veri tutulur?

Tutulan veri miktarını çeşitli faktörler etkiler. Daha fazla bilgi için müşteri olay ölçümleri sayfasının Sınırlar bölümüne bakın.

Neden beklediğim bazı günlük girdilerini görmüyorum?

Uygulamanız büyük miktarlarda veri gönderiyor olabilir ve ASP.NET sürüm 2.0.0-beta3 veya üzeri için Application Insights SDK'sını kullanıyorsunuz. Bu durumda uyarlamalı örnekleme özelliği çalışabilir ve telemetrinizin yalnızca bir bölümünü gönderebilir. Örnekleme hakkında daha fazla bilgi edinin.

Sonraki adımlar