Bagikan melalui


Penyedia pengelogan di .NET

Penyedia pengelogan menyimpan log, kecuali untuk Console penyedia, yang hanya menampilkan log sebagai output standar. Misalnya, penyedia Azure Application Insights menyimpan log di Azure Application Insights. Beberapa penyedia dapat diaktifkan.

Templat aplikasi .NET Worker default:

using Microsoft.Extensions.Hosting;

using IHost host = Host.CreateApplicationBuilder(args).Build();

// Application code should start here.

await host.RunAsync();

Kode sebelumnya menunjukkan kelas yang Program dibuat dengan templat aplikasi .NET Worker. Beberapa bagian berikutnya menyediakan sampel berdasarkan templat aplikasi .NET Worker, yang menggunakan Host Generik.

Untuk mengambil alih kumpulan penyedia pengelogan default yang ditambahkan oleh Host.CreateApplicationBuilder, panggil ClearProviders dan tambahkan penyedia pengelogan yang Anda inginkan. Misalnya, kode berikut:

HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Logging.ClearProviders();
builder.Logging.AddConsole();

Untuk penyedia tambahan, lihat:

Mengonfigurasi layanan yang bergantung pada ILogger

Untuk mengonfigurasi layanan yang bergantung pada ILogger<T>, gunakan injeksi konstruktor atau berikan metode pabrik. Pendekatan metode pabrik direkomendasikan hanya jika tidak ada opsi lain. Misalnya, pertimbangkan layanan yang memerlukan instans ILogger<T> yang disediakan oleh DI:

HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Services.AddSingleton<IExampleService>(
    container => new DefaultExampleService
    {
        Logger = container.GetRequiredService<ILogger<IExampleService>>()
    });

Kode sebelumnya adalah Func<IServiceProvider, IExampleService> yang menjalankan pertama kalinya kontainer DI perlu membuat instans IExampleService. Anda dapat mengakses semua layanan terdaftar dengan cara ini.

Penyedia pengelogan bawaan

Microsoft Extensions menyertakan penyedia pengelogan berikut sebagai bagian dari pustaka runtime:

Penyedia pengelogan berikut dikirim oleh Microsoft, tetapi bukan sebagai bagian dari pustaka runtime. Mereka harus diinstal sebagai paket NuGet tambahan.

Konsol

Penyedia Console mencatat output ke konsol.

Debug

Penyedia Debug menulis output log dengan menggunakan System.Diagnostics.Debug kelas , khususnya melalui Debug.WriteLine metode dan hanya ketika debugger dilampirkan. Membuat DebugLoggerProvider instans kelas pencatat yang mengimplementasikan ILogger antarmuka.

Sumber Kejadian

Penyedia EventSource menulis ke sumber kejadian lintas platform dengan nama Microsoft-Extensions-Logging. Di Windows, penyedia menggunakan ETW.

alat pelacakan jejak dotnet

Alat dotnet-trace adalah alat global CLI lintas platform yang memungkinkan pengumpulan jejak .NET Core dari proses yang berjalan. Alat ini mengumpulkan data penyedia Microsoft.Extensions.Logging.EventSource menggunakan LoggingEventSource.

Lihat dotnet-trace untuk petunjuk penginstalan. Untuk tutorial diagnostik menggunakan dotnet-trace, lihat Men-debug penggunaan CPU tinggi di .NET Core.

EventLog Windows

Penyedia EventLog mengirimkan output log ke Log Peristiwa Windows. Tidak seperti penyedia lainnya, penyedia EventLogtidak mewarisi pengaturan non-penyedia default. Jika pengaturan log EventLog tidak ditentukan, pengaturan defaultnya adalah LogLevel.Warning.

Untuk mencatat peristiwa yang lebih rendah dari LogLevel.Warning, atur tingkat log secara eksplisit. Contoh berikut mengatur tingkat log default Log Peristiwa ke LogLevel.Information:

"Logging": {
  "EventLog": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

Overload AddEventLog dapat meneruskan EventLogSettings. Jika null atau tidak ditentukan, pengaturan bawaan berikut akan digunakan:

  • LogName: "Aplikasi"
  • SourceName: ".NET Runtime"
  • MachineName: Nama komputer lokal yang digunakan.

Kode berikut mengubah SourceName dari nilai default ".NET Runtime" menjadi CustomLogs:

HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Logging.AddEventLog(
    config => config.SourceName = "CustomLogs");

using IHost host = builder.Build();

host.Run();

Azure App Service

Paket penyedia Microsoft.Extensions.Logging.AzureAppServices menulis log ke file teks di sistem file aplikasi Azure App Service dan ke penyimpanan blob di akun Azure Storage.

Paket penyedia tidak disertakan dalam pustaka runtime. Untuk menggunakan penyedia, tambahkan paket penyedia ke proyek.

Untuk mengonfigurasi pengaturan penyedia, gunakan AzureFileLoggerOptions dan AzureBlobLoggerOptions, seperti yang ditunjukkan pada contoh berikut:

using Microsoft.Extensions.Logging.AzureAppServices;

HostApplicationBuilder builder = Host.CreateApplicationBuilder(args)

builder.Logging.AddAzureWebAppDiagnostics();
builder.Services.Configure<AzureFileLoggerOptions>(options =>
{
    options.FileName = "azure-diagnostics-";
    options.FileSizeLimit = 50 * 1024;
    options.RetainedFileCountLimit = 5;
});
builder.Services.Configure<AzureBlobLoggerOptions>(options =>
{
    options.BlobName = "log.txt";
});

using IHost host = builder.Build();

// Application code should start here.

await host.RunAsync();

Saat disebarkan ke Azure App Service, aplikasi menggunakan pengaturan di bagian Log App Service pada halaman App Service di portal Azure. Saat pengaturan berikut diperbarui, perubahan akan langsung berlaku tanpa memerlukan mulai ulang atau penyebaran ulang aplikasi.

Lokasi default untuk file log ada di folder D:\home\LogFiles\Application . Default tambahan bervariasi menurut penyedia:

  • Pengelogan Aplikasi (Filesystem): Nama file sistem file default adalah diagnostics-yyyymmdd.txt. Batas ukuran file default adalah 10 MB, dan jumlah maksimum default file yang dipertahankan adalah 2.
  • Pengelogan Aplikasi (Blob): Nama blob default adalah {app-name}/yyyy/mm/dd/hh/{guid}_applicationLog.txt.

Penyedia ini hanya mencatat saat proyek berjalan di lingkungan Azure.

Azure log streaming

Streaming log Azure mendukung tampilan aktivitas log secara real-time dari:

  • Server aplikasi
  • Server web
  • Pelacakan permintaan gagal

Untuk mengonfigurasi Azure log streaming:

  • Buka halaman Log App Service dari halaman portal aplikasi.
  • Atur Pengelogan Aplikasi (Filesystem) ke Aktif.
  • Pilih Tingkat log. Pengaturan ini hanya berlaku untuk Azure log streaming.

Buka halaman Aliran Log untuk melihat log. Pesan yang dicatat akan dicatat dengan antarmuka ILogger.

Azure Application Insights

Paket penyedia Microsoft.Extensions.Logging.ApplicationInsights menulis log ke Azure Application Insights. Application Insights adalah layanan yang memantau aplikasi web dan menyediakan alat untuk mengkueri dan menganalisis data telemetri. Jika menggunakan penyedia ini, Anda dapat membuat kueri dan menganalisis log menggunakan alat Application Insights.

Untuk informasi selengkapnya, lihat sumber daya berikut:

Pertimbangan desain penyedia pengelogan

Jika Anda berencana untuk mengembangkan implementasi ILoggerProvider antarmuka Anda sendiri dan implementasi kustom yang sesuai dari ILogger, pertimbangkan poin-poin berikut:

  • Metode ILogger.Log ini sinkron.
  • Masa pakai status log dan objek tidak boleh diasumsikan.

Implementasi ILoggerProvider akan membuat ILogger melalui metodenya ILoggerProvider.CreateLogger . Jika implementasi Anda berupaya untuk mengantrekan pesan pengelogan dengan cara yang tidak memblokir, pesan harus terlebih dahulu diwujudkan atau status objek yang digunakan untuk mewujudkan entri log harus diserialisasikan. Melakukannya menghindari potensi pengecualian dari objek yang dibuang.

Untuk informasi selengkapnya, lihat Menerapkan penyedia pengelogan kustom di .NET.

Penyedia pengelogan pihak ketiga

Berikut adalah beberapa kerangka kerja pengelogan pihak ketiga yang bekerja dengan berbagai beban kerja .NET:

Beberapa kerangka kerja pihak ketiga dapat melakukan pengelogan semantik, yang juga dikenal sebagai pengelogan terstruktur.

Menggunakan kerangka kerja pihak ketiga mirip dengan menggunakan salah satu penyedia bawaan:

  1. Tambahkan paket NuGet ke proyek Anda.
  2. ILoggerFactory Panggil metode ekstensi atau ILoggingBuilder yang disediakan oleh kerangka kerja pengelogan.

Untuk informasi lebih lanjut, lihat dokumentasi masing-masing penyedia. Penyedia pengelogan pihak ketiga tidak didukung oleh Microsoft.

Lihat juga