W3C 로깅

W3C 확장 로깅은 서버 세션 또는 URL 그룹에서 사용하도록 설정할 수 있는 서버 쪽 로깅 유형입니다. URL 그룹에서 W3C 로깅을 사용하도록 설정하면 URL 그룹으로 라우팅되는 요청에서만 로깅이 수행됩니다. W3C 로깅을 사용하도록 구성된 각 URL 그룹에 대해 별도의 로그 파일이 만들어집니다.

서버 세션에서 W3C 로깅을 사용하도록 설정하면 서버 세션 아래의 모든 URL 그룹에 대한 중앙 집중식 로깅 형식으로 작동합니다. 단일 로그 파일은 서버 세션의 모든 URL 그룹에 대해 유지 관리됩니다.

다음 표에는 HTTP Server API에서 기록할 수 있는 필드가 나열되어 있습니다. 테이블에는 HTTP_LOG_FIELD 상수의 하위 집합이 포함되어 있습니다. 아래에 나열된 필드 중 일부는 내부적으로 HTTP Server API에서 자동으로 생성되므로 HTTP_LOG_FIELDS_DATA 구조에 포함되지 않습니다. "다른 것으로 표시" 열에는 로그 파일에 표시되는 텍스트가 포함됩니다. 테이블의 데이터는 로그 파일 레코드의 발생 순서에 따라 다릅니다.

"생성된 HTTP 서버 API"로 표시되지 않은 필드는 애플리케이션에서 HTTP_LOG_FIELDS_DATA 구조 내에서 전달되어야 합니다. 애플리케이션은 전달된 HTTP_REQUEST 구조에서 해당 필드를 생성할 수 있습니다.

필드 다음으로 표시됨 설명 HTTP_LOG_FIELDS_DATA 멤버 HTTP_LOG_FIELDS 상수
날짜 날짜 활동이 발생한 날짜입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_DATE
Time time 활동이 발생한 UTC(협정 세계시)입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_TIME
서비스 이름 및 인스턴스 번호 s-sitename 클라이언트에서 실행 중인 인터넷 서비스 이름 및 instance 번호입니다. ServiceName HTTP_LOG_FIELD_SITE_NAME
서버 이름 s-computername 로그 파일 항목이 생성된 서버의 이름입니다. ServerName HTTP_LOG_FIELD_COMPUTER_NAME
서버 IP 주소 s-ip 로그 파일 항목이 생성된 서버의 IP 주소입니다. ServerIp HTTP_LOG_FIELD_SERVER_IP
메서드 cs-method 요청된 동사(예: GET 메서드)입니다. 메서드 HTTP_LOG_FIELD_METHOD
URI 줄기 cs-uri-stem 동사의 대상(예: Default.htm)입니다. UriStem HTTP_LOG_FIELD_URI_STEM
URI 쿼리 cs-uri-query 클라이언트가 수행하려고 했던 쿼리(있는 경우)입니다. URI(Uniform Resource Identifier) 쿼리는 동적 페이지에만 필요합니다. UriQuery HTTP_LOG_FIELD_URI_QUERY
서버 포트 s-port 서비스에 대해 구성된 서버 포트 번호입니다. ServerPort HTTP_LOG_FIELD_SERVER_PORT
사용자 이름 cs-username 서버에 액세스한 인증된 사용자의 이름입니다. 익명 사용자는 하이픈으로 표시됩니다. 사용자 이름 HTTP_LOG_FIELD_USER_NAME
클라이언트 IP 주소 c-ip 요청한 클라이언트의 IP 주소입니다. ClientIp HTTP_LOG_FIELD_CLIENT_IP
프로토콜 버전 cs-version 클라이언트가 사용한 HTTP 프로토콜 버전입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_VERSION
사용자 에이전트 cs(User-Agent) 클라이언트에서 사용한 브라우저 유형입니다. UserAgent HTTP_LOG_FIELD_USER_AGENT
쿠키 cs(Cookie) 보내거나 받은 쿠키의 콘텐츠(있는 경우)입니다. 쿠키 HTTP_LOG_FIELD_COOKIE
Referrer cs(Referrer) 사용자가 마지막으로 방문한 사이트입니다. 이 사이트는 현재 사이트에 링크를 제공했습니다. Referrer HTTP_LOG_FIELD_REFERRER
호스트 cs-host 호스트 헤더 이름(있는 경우)입니다. 호스트 HTTP_LOG_FIELD_HOST
HTTP 상태 sc-상태 HTTP 상태 코드입니다. ProtocolStatus HTTP_LOG_FIELD_STATUS
프로토콜 하위 상태 sc-substatus 하위 상태 오류 코드입니다. SubStatus HTTP_LOG_FIELD_SUB_STATUS
Win32 상태 sc-win32-상태 Windows 상태 코드입니다. Win32Status HTTP_LOG_FIELD_WIN32_STATUS
보낸 바이트 sc-bytes 서버에서 보낸 바이트 수입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_BYTES_SENT
수신된 바이트 cs-bytes 서버에서 수신하고 처리한 바이트 수입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_BYTES_RECV
소요 시간 시간이 걸렸습니다. 작업에 걸린 시간(밀리초)입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_TIME_TAKEN
스트림 ID streamid 스트림 ID입니다. HTTP 서버 API가 생성되었습니다. HTTP_LOG_FIELD_STREAM_ID

 

로그 파일은 사용자 지정할 수 있는 ASCII 텍스트 기반 형식입니다. 파일의 필드 접두사는 다음과 같이 정의됩니다.

접두사 Description
s 서버 작업.
c 클라이언트 작업.
사우스 캐롤라이나 서버-클라이언트 작업.
cs 클라이언트-서버 작업.

 

애플리케이션은 W3C 확장 로그 파일 필드 중 하나 이상을 선택할 수 있지만 일부 필드에는 정보가 포함되지 않습니다. 선택되었지만 정보가 없는 필드의 경우 하이픈(-)이 자리 표시자로 표시됩니다. 필드에 인쇄할 수 없는 문자가 포함된 경우 HTTP Server API는 로그 파일 형식을 유지하기 위해 더하기 기호(+)로 바꿉니다. 이는 일반적으로 바이러스 공격으로 발생합니다. 예를 들어 악의적인 사용자가 캐리지 리턴을 보내고 더하기 기호(+)로 대체하지 않으면 로그 파일 형식을 깨뜨리는 줄 바꿈이 발생합니다. 필드는 공백으로 구분됩니다.

URL 그룹 또는 서버 세션에서 필드를 사용하도록 설정했지만 요청에 대해 선택되지 않은 경우 하이픈(-)을 자리 표시자로 사용하여 로그 파일에 표시됩니다.

로그 파일은 첫 번째 요청이 URL 그룹 또는 서버 세션에 도착하면 만들어지고 로깅이 구성되면 만들어지지 않습니다. 다음 예제에서는 클라이언트 IP, 사용자 이름, 서버 IP, 서버 포트, 메서드, URI Stem, URI 쿼리, 상태 및 사용자 에이전트 필드를 사용하도록 설정된 W3C 로그 파일에 대한 첫 번째 로그 파일 항목을 보여 줍니다.

#Software: Microsoft HTTP Server API 2.0  
#Version: 1.0   // the log file version as it's described by "https://www.w3.org/TR/WD-logfile".
#Date: 2002-05-02 17:42:15  // when the first log file entry was recorded, which is when the entire log file was created.
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)
2002-05-02 17:42:15 172.22.255.255 - 172.30.255.255 80 GET /images/picture.jpg - 200 Mozilla/4.0+(compatible;MSIE+5.5;+Windows+2000+Server)

시간이 소요된 필드는 요청이 구문 분석되기 전에 HTTP Server API가 첫 번째 바이트를 수신할 때 초기화됩니다. 마지막 보내기 완료가 발생할 때 시간이 걸린 타임스탬프가 중지됩니다. 시간이 소요된 것은 네트워크 전체의 시간을 반영하지 않습니다. 사이트에 대한 첫 번째 요청은 HTTP Server API가 첫 번째 요청과 함께 로그 파일을 열기 때문에 다른 유사한 요청보다 약간 더 긴 시간을 표시합니다.