ASP.NET Core の W3CLogger
Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、「.NET および .NET Core サポート ポリシー」を参照してください。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
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 は、パス、状態コード、日付、時刻、プロトコルなどの共通プロパティをログに記録します。 1 つの要求と応答のペアに関する情報は、すべて同じ行に書き込まれます。
#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 は、パス、状態コード、日付、時刻、プロトコルなどの共通プロパティをログに記録します。 1 つの要求と応答のペアに関する情報は、すべて同じ行に書き込まれます。
#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 に関するページをご覧ください。
ASP.NET Core