Bagikan melalui


W3CLogger di ASP.NET Core

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.