W3CLogger в ASP.NET Core

W3CLogger — это ПО промежуточного слоя, записывающее файлы журналов в стандартном формате W3C. Журналы содержат сведения об HTTP-запросах и HTTP-ответах. W3CLogger предоставляет журналы для следующего:

  • HTTP-запросы;
  • Общие свойства
  • Заголовки
  • HTTP-ответы.
  • Метаданные о паре "запрос-ответ" (дата и время запуска, затраченное время)

W3CLogger можно использовать в нескольких сценариях для следующего:

  • запись сведений о входящих запросах и ответах;
  • фильтрация регистрируемых частей запросов и ответов;
  • фильтрация регистрируемых заголовков.

W3CLogger может снижать производительность приложения. Учитывайте влияние на производительность при выборе полей для записи в журнал —чем больше свойств для записи, тем ниже производительность. Проверьте влияние выбранных свойств ведения журнала на производительность.

Предупреждение

В ходе работы W3CLogger могут записываться личные сведения. Примите во внимание возможные риски и не записывайте конфиденциальную информацию. По умолчанию поля, которые могут содержать личные сведения, не регистрируются.

Включение W3CLogger

Включите W3CLogger с помощью UseW3CLogging, который добавляет ПО промежуточного слоя 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, вызовите AddW3CLogging в Program.cs:

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 могут записываться личные сведения. Примите во внимание возможные риски и не записывайте конфиденциальную информацию. По умолчанию поля, которые могут содержать личные сведения, не регистрируются.

Включение W3CLogger

Включите W3CLogger с помощью UseW3CLogging, который добавляет ПО промежуточного слоя 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, вызовите AddW3CLogging в 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 — это перечисление битовых флагов, которое настраивает определенные части запроса и ответа для регистрации, а также другие сведения о подключении. LoggingFields по умолчанию включает все возможные поля, кроме UserName и Cookie. Полный список доступных полей см. здесь: W3CLoggingFields.