Jelajahi log jejak .NET/.NET Core dan Python di Application Insights

Kirim log pelacakan diagnostik untuk aplikasi ASP.NET/ASP.NET Core Anda dari ILogger, NLog, log4Net, atau System.Diagnostics.Trace ke Azure Application Insights. Untuk aplikasi Python, kirim log pelacakan diagnostik menggunakan AzureLogHandler di OpenCensus Python untuk Azure Monitor. Anda kemudian dapat menjelajahi dan mencarinya. Log tersebut digabungkan dengan file log lainnya dari aplikasi Anda. Anda dapat menggunakannya untuk mengidentifikasi jejak yang terkait dengan setiap permintaan pengguna dan menghubungkannya dengan peristiwa dan laporan pengecualian lainnya.

Catatan

Apakah Anda memerlukan modul pengambilan log? Ini adalah adaptor yang berguna untuk pencatat pihak ketiga. Namun, jika Anda belum menggunakan NLog, log4Net, atau System.Diagnostics.Trace, pertimbangkan untuk memanggil Application Insights TrackTrace() secara langsung.

Catatan

Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.

Menginstal pengelogan di aplikasi Anda

Instal kerangka kerja pengelogan yang Anda pilih di proyek Anda, yang seharusnya menghasilkan entri dalam app.config atau web.config.

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

Mengonfigurasi Application Insights untuk mengumpulkan log

Tambahkan Application Insights ke proyek Anda jika Anda belum melakukannya dan ada opsi untuk menyertakan pengumpul log.

Atau klik kanan proyek Anda di Penjelajah Solusi untuk Mengonfigurasi Application Insights. Pilih opsi Konfigurasikan kumpulan jejak.

Catatan

Tidak ada opsi menu Application Insights atau pengumpul log? Coba Pemecahan Masalah.

Penginstalan manual

Gunakan metode ini jika jenis proyek Anda tidak didukung oleh alat penginstal Application Insights. Misalnya, jika itu adalah proyek desktop Windows.

  1. Instal log4net atau NLog di proyek Anda jika Anda berencana menggunakannya.

  2. Pada Penjelajah Solusi, klik kanan proyek Anda dan pilih Kelola Paket NuGet.

  3. Cari Application Insights.

  4. Pilih salah satu paket berikut ini:

Paket NuGet menginstal rakitan yang diperlukan dan memodifikasi web.config atau app.config jika itu berlaku.

ILogger

Untuk contoh penggunaan penerapan Application Insights ILogger dengan aplikasi konsol dan ASP.NET Core, lihat ApplicationInsightsLoggerProvider untuk log .NET Core ILogger.

Menyisipkan panggilan log diagnostik

Jika Anda menggunakan System.Diagnostics.Trace, panggilan umum adalah:

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

Jika Anda lebih suka log4net atau NLog, gunakan:

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

Menggunakan peristiwa EventSource

Anda dapat mengonfigurasi peristiwa System.Diagnostics.Tracing.EventSource untuk dikirim ke Application Insights sebagai jejak. Pertama, instal paket NuGet Microsoft.ApplicationInsights.EventSourceListener. Lalu edit bagian TelemetryModules file ApplicationInsights.config.

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

Untuk setiap sumber, Anda dapat mengatur parameter berikut:

  • Nama menentukan nama EventSource yang akan dikumpulkan.
  • Tingkat menentukan tingkat pengelogan untuk dikumpulkan: Kritis, Kesalahan, Informasi, LogAlways, Verbose, atau Peringatan.
  • Kata kunci (opsional) menentukan nilai bilangan bulat dari kombinasi kata kunci yang akan digunakan.

Menggunakan peristiwa DiagnosticSource

Anda dapat mengonfigurasi peristiwa System.Diagnostics.Tracing.EventSource untuk dikirim ke Application Insights sebagai jejak. Pertama, instal paket NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener. Lalu edit bagian "TelemetryModules" dari file ApplicationInsights.config.

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

Untuk setiap sumber diagnostik yang ingin Anda lacak, tambahkan entri dengan set atribut Name ke nama sumber diagnostik Anda.

Menggunakan peristiwa ETW

Anda dapat mengonfigurasi peristiwa Penelusuran Peristiwa untuk Windows (ETW) yang akan dikirim ke Application Insights sebagai jejak. Pertama, instal paket NuGet Microsoft.ApplicationInsights.EtwCollector. Lalu edit bagian "TelemetryModules" dari file ApplicationInsights.config.

Catatan

Peristiwa ETW hanya dapat dikumpulkan jika proses yang hosting SDK berjalan di bawah identitas yang merupakan anggota Pengguna Atau Administrator Log Performa.

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

Untuk setiap sumber, Anda dapat mengatur parameter berikut:

  • ProviderName adalah nama penyedia ETW yang akan dikumpulkan.
  • ProviderGuid menentukan GUID penyedia ETW yang akan dikumpulkan. Ini dapat digunakan alih-alih ProviderName.
  • Tingkat mengatur tingkat pengelogan yang akan dikumpulkan. Ini bisa Kritis, Kesalahan, Informasi, LogAlways, Verbose, atau Peringatan.
  • Kata kunci (opsional) atur nilai integer dari kombinasi kata kunci yang akan digunakan.

Menggunakan Trace API secara langsung

Anda dapat menghubungi API pelacakan Application Insights secara langsung. Adaptor pengelogan menggunakan API ini.

Contohnya:

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

Keuntungan dari TrackTrace adalah Anda dapat memasukkan data yang relatif panjang ke dalam pesan. Misalnya, Anda dapat menyandikan data POST di sana.

Anda juga dapat menambahkan tingkat keparahan ke pesan Anda. Dan, seperti telemetri lainnya, Anda dapat menambahkan nilai properti untuk membantu memfilter atau mencari set jejak yang berbeda. Contohnya:

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

Sekarang Anda dapat dengan mudah memfilter di Pencarian Transaksi semua pesan dari tingkat keparahan tertentu yang terkait dengan database tertentu.

AzureLogHandler untuk OpenCensus Python

Azure Monitor Log Handler memungkinkan Anda untuk mengekspor log Python ke Azure Monitor.

Instrumen aplikasi Anda dengan OpenCensus Python SDK untuk Azure Monitor.

Contoh ini memperlihatkan cara mengirim log tingkat peringatan ke 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!')

Menjelajahi log Anda

Jalankan aplikasi Anda dalam mode debug atau sebarkan secara langsung.

Di panel gambaran umum aplikasi Anda di portal Application Insights, pilih Pencarian Transaksi.

Anda dapat, misalnya:

  • Memfilter jejak log atau pada item dengan properti tertentu.
  • Meneriksa item tertentu secara rinci.
  • Menemukan data log sistem lain yang terkait dengan permintaan pengguna yang sama (memiliki ID operasi yang sama).
  • Menyimpan konfigurasi halaman sebagai favorit.

Catatan

Jika aplikasi Anda mengirim banyak data dan Anda menggunakan SDK Application Insights untuk ASP.NET versi 2.0.0-beta3 atau yang lebih baru, fitur pengambilan sampel adaptif dapat beroperasi dan hanya mengirim persentase telemetri Anda. Pelajari lebih lanjut tentang pengambilan sampel.

Pemecahan Masalah

Temukan jawaban atas pertanyaan umum.

Apa yang menyebabkan telemetri tertunda, jaringan kelebihan beban, dan transmisi tidak efisien?

System.Diagnostics.Tracing memiliki fitur Autoflush. Fitur ini menyebabkan SDK memerah dengan setiap item telemetri yang tidak diinginkan dan dapat menyebabkan masalah adaptor pengelogan seperti telemetri tertunda, jaringan kelebihan beban, dan transmisi tidak efisien.

Bagaimana cara melakukan ini untuk Java?

Dalam instrumentasi tanpa kode Java, yang mana disarankan, log dikumpulkan di luar kotak. Gunakan agen Java 3.0.

Agen Java Application Insights mengumpulkan log dari Log4j, Logback, dan java.util.logging di luar kotak.

Mengapa tidak ada opsi Application Insights pada menu konteks proyek?

  • Pastikan Developer Analytics Tools diinstal pada mesin pengembangan. Di Visual Studio, buka Alat>Ekstensi, dan Pembaruan, lalu cari Alat Analitik Pengembang. Jika tidak ada di tab Terinstal, buka tab Online dan instal.
  • Ini mungkin jenis proyek yang tidak didukung oleh Alat Analitik Pengembang. Gunakan penginstalan manual.

Mengapa tidak ada opsi adaptor log di alat konfigurasi?

  • Instal kerangka kerja pengelogan terlebih dahulu.
  • Jika Anda menggunakan System.Diagnostics.Trace, pastikan Anda telah mengonfigurasinya di web.config.
  • Pastikan Anda memiliki versi terbaru Application Insights. Di Visual Studio, buka Alat>Ekstensi, dan Pembaruan, lalu buka tab Pembaruan. Jika Alat Analitik Pengembang ada di sana, pilih untuk memperbaruinya.

Mengapa saya mendapatkan pesan kesalahan "Kunci instrumentasi tidak boleh kosong"?

Anda mungkin menginstal paket adaptor pengelogan NuGet tanpa menginstal Application Insights. Di Penjelajah Solusi, klik kanan ApplicationInsights.config, dan pilih Perbarui Application Insights. Anda diminta untuk masuk ke Azure dan membuat sumber daya Application Insights atau menggunakan kembali sumber daya yang sudah ada. Ini harus memperbaiki masalah.

Ini bisa memakan waktu untuk semua peristiwa dan permintaan untuk melewati alur.

Berapa banyak data yang disimpan?

Beberapa faktor mempengaruhi jumlah data yang dipertahankan. Untuk informasi selengkapnya, lihat bagian Batas di halaman metrik peristiwa pelanggan.

Mengapa saya tidak melihat beberapa entri log yang saya harapkan?

Mungkin aplikasi Anda mengirimkan data dalam jumlah besar dan Anda menggunakan SDK Application Insights untuk ASP.NET versi 2.0.0-beta3 atau yang lebih baru. Dalam hal ini, fitur pengambilan sampel adaptif mungkin beroperasi dan hanya mengirim sebagian telemetri Anda. Pelajari lebih lanjut tentang pengambilan sampel.

Langkah berikutnya