Bagikan melalui


Penyedia pengelogan di .NET

Penyedia pengelogan menyimpan log, kecuali untuk penyedia Console, 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 Program yang 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 di atas adalah Func<IServiceProvider, IExampleService> yang dijalankan pertama kali ketika kontainer DI perlu membuat instans dari IExampleService. Anda dapat mengakses salah satu layanan terdaftar dengan cara ini.

Penyedia pencatatan bawaan

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

Penyedia pencatatan berikut disediakan oleh Microsoft, tetapi bukan sebagai bagian dari perpustakaan runtime. Mereka harus diinstal sebagai paket NuGet tambahan.

Konsol

Penyedia Console mencatat output ke konsol.

Debug

Penyedia Debug menulis output log dengan menggunakan kelas System.Diagnostics.Debug, khususnya melalui metode Debug.WriteLine dan hanya ketika debugger dilampirkan. DebugLoggerProvider membuat instance dari kelas logger yang mengimplementasikan antarmuka ILogger.

Sumber Kejadian

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

perangkat pelacakan dotnet

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

Lihat dotnet-trace untuk instruksi penginstalan. Untuk tutorial diagnostik menggunakan dotnet-trace, lihat Debug penggunaan CPU tinggi di .NET Core.

Windows EventLog

Penyedia EventLog mengirim output log ke Log Peristiwa Windows. Tidak seperti penyedia lain, penyedia EventLog tidak tidak mewarisi pengaturan non-penyedia default. Jika pengaturan log EventLog tidak ditentukan, pengaturan tersebut default ke LogLevel.Warning.

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

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

addEventLog kelebihan beban dapat melewati EventLogSettings. Jika null atau tidak ditentukan, pengaturan default berikut digunakan:

  • LogName: "Aplikasi"
  • SourceName: ".NET Runtime"
  • MachineName: Nama komputer lokal 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 pada akun Azure Storage.

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

Untuk mengonfigurasi pengaturan penyedia, gunakan AzureFileLoggerOptions dan AzureBlobLoggerOptions, seperti yang ditunjukkan dalam 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 App Service logs pada halaman App Service dari portal Azure. Saat pengaturan berikut diperbarui, perubahan segera berlaku tanpa memerlukan restart atau penyebaran ulang aplikasi.

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

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

Penyedia ini hanya mencatat saat proyek berjalan di lingkungan Azure.

Streaming log di Azure

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

  • Server aplikasi
  • Server web tersebut
  • Pelacakan permintaan gagal

Untuk mengonfigurasi streaming log Azure:

  • Arahkan ke halaman log App Service dari halaman portal aplikasi.
  • Atur Application Logging (Filesystem) ke Nyala.
  • Pilih log Tingkat. Pengaturan ini hanya berlaku untuk streaming log Azure.

Navigasikan ke halaman Aliran Log untuk melihat log. Pesan yang dicatat dicatat dengan antarmuka ILogger.

Azure Application Insights

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

Untuk informasi selengkapnya, lihat sumber daya berikut ini:

Pertimbangan desain penyedia pengelogan

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

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

Implementasi ILoggerProvider akan membuat ILogger melalui metode 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. Tindakan ini 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 , 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. Panggil metode ekstensi ILoggerFactory atau ILoggingBuilder yang disediakan oleh kerangka kerja pengelogan.

Untuk informasi selengkapnya, lihat dokumentasi setiap penyedia. Penyedia pengelogan pihak ketiga tidak didukung oleh Microsoft.

Lihat juga