ASP.NET Core의 W3CLogger

W3CLogger는 W3C 표준 형식으로 로그 파일을 기록하는 미들웨어입니다. 로그에는 HTTP 요청 및 HTTP 응답에 대한 정보가 포함됩니다. W3CLogger는 다음의 로그를 제공합니다.

  • HTTP 요청 정보
  • 일반 속성
  • 헤더
  • HTTP 응답 정보
  • 요청/응답 쌍에 대한 메타데이터(시작된 날짜/시간, 소요 시간)

W3CLogger가 유용한 몇 가지 시나리오는 다음과 같습니다.

  • 들어오는 요청 및 응답에 대한 정보를 기록합니다.
  • 요청 및 응답의 어느 부분이 로그되는지 필터링합니다.
  • 로그할 헤더를 필터링합니다.

W3CLogger는 앱의 성능을 저하시킬 수 있습니다. 로그할 필드를 선택할 때 성능 영향을 고려합니다. 더 많은 속성을 로그하면 성능이 더 저하됩니다. 선택한 로깅 속성이 성능에 미치는 영향을 테스트하세요.

Warning

W3CLogger는 PII(개인 식별 정보)를 로그할 가능성이 있습니다. 위험성을 고려해 중요한 정보를 로그하지 않도록 하세요. 기본적으로 PII를 포함할 수 있는 필드는 로그되지 않습니다.

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 미들웨어를 구성하려면 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는 기본적으로 UserNameCookie를 제외한 가능한 모든 필드를 포함하도록 설정됩니다. 사용 가능한 필드의 전체 목록은 W3CLoggingFields을 참조하세요.

W3CLogger는 W3C 표준 형식으로 로그 파일을 기록하는 미들웨어입니다. 로그에는 HTTP 요청 및 HTTP 응답에 대한 정보가 포함됩니다. W3CLogger는 다음의 로그를 제공합니다.

  • HTTP 요청 정보
  • 일반 속성
  • 헤더
  • HTTP 응답 정보
  • 요청/응답 쌍에 대한 메타데이터(시작된 날짜/시간, 소요 시간)

W3CLogger가 유용한 몇 가지 시나리오는 다음과 같습니다.

  • 들어오는 요청 및 응답에 대한 정보를 기록합니다.
  • 요청 및 응답의 어느 부분이 로그되는지 필터링합니다.
  • 로그할 헤더를 필터링합니다.

W3CLogger는 앱의 성능을 저하시킬 수 있습니다. 로그할 필드를 선택할 때 성능 영향을 고려합니다. 더 많은 속성을 로그하면 성능이 더 저하됩니다. 선택한 로깅 속성이 성능에 미치는 영향을 테스트하세요.

Warning

W3CLogger는 PII(개인 식별 정보)를 로그할 가능성이 있습니다. 위험성을 고려해 중요한 정보를 로그하지 않도록 하세요. 기본적으로 PII를 포함할 수 있는 필드는 로그되지 않습니다.

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 미들웨어를 구성하려면 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는 기본적으로 UserNameCookie를 제외한 가능한 모든 필드를 포함하도록 설정됩니다. 사용 가능한 필드의 전체 목록은 W3CLoggingFields을 참조하세요.