From d2304c013103ffa76ebb2a22b4959c1281f0ac12 Mon Sep 17 00:00:00 2001 From: Tom Dykstra Date: Mon, 15 Aug 2022 09:49:35 -0700 Subject: [PATCH] add 7.0 moniker (#26741) --- aspnetcore/fundamentals/w3c-logger/index.md | 56 ++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/aspnetcore/fundamentals/w3c-logger/index.md b/aspnetcore/fundamentals/w3c-logger/index.md index 53d9bc8d47b2..02857b8f20cf 100644 --- a/aspnetcore/fundamentals/w3c-logger/index.md +++ b/aspnetcore/fundamentals/w3c-logger/index.md @@ -4,12 +4,64 @@ author: wtgodbe description: Learn how to create server logs in the W3C standard format. monikerRange: '>= aspnetcore-6.0' ms.author: wigodbe -ms.date: 01/21/2022 +ms.date: 08/15/2022 uid: fundamentals/w3c-logger/index --- # W3CLogger in ASP.NET Core +:::moniker range="= aspnetcore-6.0" + +W3CLogger is a middleware that writes log files in the [W3C standard format](https://www.w3.org/TR/WD-logfile.html). The logs contain information about HTTP requests and HTTP responses. W3CLogger provides logs of: + +* HTTP request information +* Common properties +* Headers +* HTTP response information +* Metadata about the request/response pair (date/time started, time taken) + +W3CLogger is valuable in several scenarios to: + +* Record information about incoming requests and responses. +* Filter which parts of the request and response are logged. +* Filter which headers to log. + +W3CLogger ***can reduce the performance of an app***. Consider the performance impact when selecting fields to log - the performance reduction will increase as you log more properties. Test the performance impact of the selected logging properties. + +> [!WARNING] +> W3CLogger can potentially log personally identifiable information (PII). Consider the risk and avoid logging sensitive information. By default, fields that could contain PII aren't logged. + +## Enable W3CLogger + +Enable W3CLogger with , which adds the W3CLogger middleware: + +:::code language="csharp" source="samples/6.x/Program.cs" id="snippet_UseW3CLogging" highlight="3"::: + +By default, W3CLogger logs common properties such as path, status-code, date, time, and protocol. All information about a single request/response pair is written to the same line. + +``` +#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 + +To configure the W3CLogger middleware, call in `Program.cs`: + +:::code language="csharp" source="samples/6.x/Program.cs" id="snippet_AddW3CLogging" highlight="3"::: + +### `LoggingFields` + + is a bit flag enumeration that configures specific parts of the request and response to log, and other information about the connection. `LoggingFields` defaults to include all possible fields except `UserName` and `Cookie`. For a complete list of available fields, see . + +::: moniker-end + +:::moniker range=">= aspnetcore-7.0" + W3CLogger is a middleware that writes log files in the [W3C standard format](https://www.w3.org/TR/WD-logfile.html). The logs contain information about HTTP requests and HTTP responses. W3CLogger provides logs of: * HTTP request information @@ -55,3 +107,5 @@ To configure the W3CLogger middleware, call is a bit flag enumeration that configures specific parts of the request and response to log, and other information about the connection. `LoggingFields` defaults to include all possible fields except `UserName` and `Cookie`. For a complete list of available fields, see . + +::: moniker-end