W3CLogger trong .NET và 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:
- Thông tin HTTP request
- Các thuộc tính chung
- Headers (tiêu đề)
- Thông tin HTTP response
- Metadata về cặp request/response (ngày/giờ bắt đầu, thời gian thực hiện)
W3CLogger hữu ích trong một số tình huống:
- Ghi lại thông tin về incoming requests và responses.
- Lọc các phần nào của request và response được ghi.
- Lọc headers nào được ghi.
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:
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.
#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:
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ừ UserName và Cookie. Để 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ọn | Mô tả |
|---|---|
FileSizeLimit | Giới hạn kích thước file log (bytes) |
RetainedFileCountLimit | Số file log tối đa được giữ lại |
FileName | Tên file log |
LogDirectory | Thư mục lưu file log |
FlushInterval | Khoảng thời gian flush dữ liệu vào file |
AdditionalRequestHeaders | Các request headers bổ sung được ghi |