Bagikan melalui


W3CLogger di ASP.NET Core

Catatan

Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

Peringatan

Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

Penting

Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

W3CLogger adalah middleware yang menulis file log dalam format standar W3C. Log berisi informasi tentang permintaan HTTP dan respons HTTP. W3CLogger menyediakan log dari:

  • Informasi permintaan HTTP
  • Properti umum
  • Header
  • Informasi respons HTTP
  • Metadata tentang pasangan permintaan/respons (tanggal/waktu dimulai, waktu yang dibutuhkan)

W3CLogger berguna dalam beberapa skenario untuk:

  • Mencatat informasi tentang permintaan dan respons yang masuk.
  • Memfilter bagian mana dari permintaan dan respons yang dicatat.
  • Memfilter header mana yang akan dicatat.

W3CLogger dapat mengurangi performa aplikasi. Pertimbangkan dampak performa saat memilih bidang yang akan dicatat - pengurangan performa akan meningkat saat Anda mencatat lebih banyak properti. Uji dampak performa dari properti pengelogan yang dipilih.

Peringatan

W3CLogger berpotensi dapat mencatat informasi pengidentifikasi pribadi (PII). Pertimbangkan risikonya dan hindari pengelogan informasi sensitif. Secara default, bidang yang dapat berisi PII tidak dicatat.

Mengaktifkan W3CLogger

Aktifkan W3CLogger dengan UseW3CLogging, yang menambahkan middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Secara default, W3CLogger mencatat properti umum seperti jalur, kode status, tanggal, waktu, dan protokol. Semua informasi tentang satu pasangan permintaan/respons ditulis ke baris yang sama.

#Version: 1.0
#Start-Date: 2021-09-29 22:18:28
#Fields: date time c-ip s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status time-taken cs-version cs-host cs(User-Agent) cs(Referer)
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 59.9171 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.1802 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:30 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.0966 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -

Opsi W3CLogger

Untuk mengonfigurasi middleware W3CLogger, panggil AddW3CLogging di Program.cs:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;

    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

LoggingFields

W3CLoggerOptions.LoggingFields adalah enumerasi bendera bit yang mengonfigurasi bagian tertentu dari permintaan dan respons ke log, serta informasi lain tentang koneksi. LoggingFields defaultnya adalah menyertakan semua bidang yang memungkinkan kecuali UserName dan Cookie. Untuk daftar lengkap bidang yang tersedia, lihat W3CLoggingFields.

W3CLogger adalah middleware yang menulis file log dalam format standar W3C. Log berisi informasi tentang permintaan HTTP dan respons HTTP. W3CLogger menyediakan log dari:

  • Informasi permintaan HTTP
  • Properti umum
  • Header
  • Informasi respons HTTP
  • Metadata tentang pasangan permintaan/respons (tanggal/waktu dimulai, waktu yang dibutuhkan)

W3CLogger berguna dalam beberapa skenario untuk:

  • Mencatat informasi tentang permintaan dan respons yang masuk.
  • Memfilter bagian mana dari permintaan dan respons yang dicatat.
  • Memfilter header mana yang akan dicatat.

W3CLogger dapat mengurangi performa aplikasi. Pertimbangkan dampak performa saat memilih bidang yang akan dicatat - pengurangan performa akan meningkat saat Anda mencatat lebih banyak properti. Uji dampak performa dari properti pengelogan yang dipilih.

Peringatan

W3CLogger berpotensi dapat mencatat informasi pengidentifikasi pribadi (PII). Pertimbangkan risikonya dan hindari pengelogan informasi sensitif. Secara default, bidang yang dapat berisi PII tidak dicatat.

Mengaktifkan W3CLogger

Aktifkan W3CLogger dengan UseW3CLogging, yang menambahkan middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Secara default, W3CLogger mencatat properti umum seperti jalur, kode status, tanggal, waktu, dan protokol. Semua informasi tentang satu pasangan permintaan/respons ditulis ke baris yang sama.

#Version: 1.0
#Start-Date: 2021-09-29 22:18:28
#Fields: date time c-ip s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status time-taken cs-version cs-host cs(User-Agent) cs(Referer)
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 59.9171 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.1802 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:30 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.0966 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -

Opsi W3CLogger

Untuk mengonfigurasi middleware W3CLogger, panggil AddW3CLogging di Program.cs:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;

    logging.AdditionalRequestHeaders.Add("x-forwarded-for");
    logging.AdditionalRequestHeaders.Add("x-client-ssl-protocol");
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

LoggingFields

W3CLoggerOptions.LoggingFields adalah enumerasi bendera bit yang mengonfigurasi bagian tertentu dari permintaan dan respons ke log, serta informasi lain tentang koneksi. LoggingFields defaultnya adalah menyertakan semua bidang yang memungkinkan kecuali UserName dan Cookie. Untuk daftar lengkap bidang yang tersedia, lihat W3CLoggingFields.