ASP.NET Core 中的 W3CLogger
注意
這不是這篇文章的最新版本。 如需目前的版本,請參閱 本文的 .NET 9 版本。
警告
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支援原則。 如需目前版本,請參閱本文的 .NET 8 版本。
W3CLogger 是一種中介軟體,可使用 W3C 標準格式撰寫記錄檔。 記錄中會包含 HTTP 要求與 HTTP 回應的相關資訊。 W3CLogger 會提供下列項目的記錄:
- HTTP 要求資訊
- 通用屬性
- 標頭
- HTTP 回應資訊
- 要求/回應組的相關中繼資料 (開始日期/時間、所使用的時間)
下列幾種情況非常適合使用 W3CLogger:
- 記錄傳入要求和回應的相關資訊。
- 篩選要求和回應的記錄部分。
- 篩選要記錄的標頭。
W3CLogger 可能會降低應用程式的效能。 選取要記錄的欄位時,請考慮效能影響 - 當您記錄的屬性變多時,效能的下降幅度會增加。 測試所選記錄屬性的效能影響。
警告
W3CLogger 可能會記錄個人識別資訊 (PII)。 請考慮風險並避免記錄敏感性資訊。 根據預設,系統不會記錄可能包含 PII 的欄位。
啟用 W3CLogger
使用 UseW3CLogging 啟用 W3CLogger,這會新增 W3CLogger 中介軟體:
var app = builder.Build();
app.UseW3CLogging();
app.UseRouting();
根據預設,W3CLogger 會記錄通用屬性,例如路徑、狀態碼、日期、時間和通訊協定。 單一要求/回應組的所有相關資訊都會寫入同一行。
#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 選項
若要設定 W3CLogger 中介軟體,請在 Program.cs
中呼叫 AddW3CLogging:
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 是位元旗標列舉,可設定要記錄的具體要求和回應部分,以及連線的其他相關資訊。 LoggingFields
預設會包含除了UserName
和 Cookie
以外的所有可能欄位。 如需可用欄位的完整清單,請參閱 W3CLoggingFields。
W3CLogger 是一種中介軟體,可使用 W3C 標準格式撰寫記錄檔。 記錄中會包含 HTTP 要求與 HTTP 回應的相關資訊。 W3CLogger 會提供下列項目的記錄:
- HTTP 要求資訊
- 通用屬性
- 標頭
- HTTP 回應資訊
- 要求/回應組的相關中繼資料 (開始日期/時間、所使用的時間)
下列幾種情況非常適合使用 W3CLogger:
- 記錄傳入要求和回應的相關資訊。
- 篩選要求和回應的記錄部分。
- 篩選要記錄的標頭。
W3CLogger 可能會降低應用程式的效能。 選取要記錄的欄位時,請考慮效能影響 - 當您記錄的屬性變多時,效能的下降幅度會增加。 測試所選記錄屬性的效能影響。
警告
W3CLogger 可能會記錄個人識別資訊 (PII)。 請考慮風險並避免記錄敏感性資訊。 根據預設,系統不會記錄可能包含 PII 的欄位。
啟用 W3CLogger
使用 UseW3CLogging 啟用 W3CLogger,這會新增 W3CLogger 中介軟體:
var app = builder.Build();
app.UseW3CLogging();
app.UseRouting();
根據預設,W3CLogger 會記錄通用屬性,例如路徑、狀態碼、日期、時間和通訊協定。 單一要求/回應組的所有相關資訊都會寫入同一行。
#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 選項
若要設定 W3CLogger 中介軟體,請在 Program.cs
中呼叫 AddW3CLogging:
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 是位元旗標列舉,可設定要記錄的具體要求和回應部分,以及連線的其他相關資訊。 LoggingFields
預設會包含除了UserName
和 Cookie
以外的所有可能欄位。 如需可用欄位的完整清單,請參閱 W3CLoggingFields。