Nguon: Microsoft Learn · .NET 8.0

W3CLogger trong .NET và ASP.NET Core

Nguồn: W3CLogger in .NET and ASP.NET Core

W3CLogger là middleware (phần mềm trung gian) ghi file log theo định dạng chuẩn W3C. Logs chứa thông tin về HTTP requests và HTTP responses. W3CLogger cung cấp logs của:

W3CLogger hữu ích trong một số tình huống:

W3CLogger có thể làm giảm hiệu năng ứng dụng. Cân nhắc tác động đến hiệu năng khi chọn các trường để ghi - mức giảm hiệu năng sẽ tăng khi bạn ghi nhiều thuộc tính hơn. Test tác động đến hiệu năng của các thuộc tính logging đã chọn.

W3CLogger có khả năng ghi thông tin nhận dạng cá nhân (PII). Xem xét rủi ro và tránh ghi thông tin nhạy cảm. Theo mặc định, các trường có thể chứa PII không được ghi.

Bật W3CLogger

Bật W3CLogger với UseW3CLogging, thêm W3CLogger middleware:

csharp
var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Theo mặc định, W3CLogger ghi các thuộc tính chung như path, status-code, date, time và protocol. Tất cả thông tin về một cặp request/response đơn lẻ được ghi trên cùng một dòng.

code
#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 -

W3CLogger options (tùy chọn W3CLogger)

Để cấu hình W3CLogger middleware, gọi AddW3CLogging trong Program.cs:

csharp
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 là bit flag enumeration cấu hình các phần cụ thể của request và response để ghi, và thông tin khác về connection. LoggingFields mặc định bao gồm tất cả các trường có thể có ngoại trừ UserNameCookie. Để xem danh sách đầy đủ các trường có sẵn, xem W3CLoggingFields.

Các tùy chọn cấu hình khác

Tùy chọnMô tả
FileSizeLimitGiới hạn kích thước file log (bytes)
RetainedFileCountLimitSố file log tối đa được giữ lại
FileNameTên file log
LogDirectoryThư mục lưu file log
FlushIntervalKhoảng thời gian flush dữ liệu vào file
AdditionalRequestHeadersCác request headers bổ sung được ghi