Ведение журнала W3C

Расширенное ведение журнала W3C — это тип ведения журнала на стороне сервера, который можно включить в сеансе сервера или группе URL-адресов. Если ведение журнала W3C включено в группе URL-адресов, ведение журнала выполняется только для запросов, которые направляются в группу URL-адресов. Для каждой группы URL-адресов, настроенной для включения ведения журнала W3C, создается отдельный файл журнала.

Если ведение журнала W3C включено в сеансе сервера, оно функционирует как централизованная форма ведения журнала для всех групп URL-адресов в сеансе сервера. Один файл журнала поддерживается для всех групп URL-адресов в сеансе сервера.

В следующей таблице перечислены поля, которые могут быть зарегистрированы API HTTP-сервера. Таблица содержит подмножество констант HTTP_LOG_FIELD . Некоторые из перечисленных ниже полей автоматически создаются API HTTP-сервера и поэтому не содержатся в структуре HTTP_LOG_FIELDS_DATA . Столбец "Отображается как" содержит текст, отображаемый в файле журнала. Данные в таблице указаны в порядке вхождения в запись файла журнала.

Поля, которые не помечены как созданные API HTTP-сервера, должны передаваться приложением внутри HTTP_LOG_FIELDS_DATA структуры. Приложение может создавать эти поля из переданной ему структуры HTTP_REQUEST .

Поле Отображается как Описание Член HTTP_LOG_FIELDS_DATA константы HTTP_LOG_FIELDS
Дата дата Дата, в которую произошло действие. Создан API HTTP-сервера. HTTP_LOG_FIELD_DATE
Time time Время в формате UTC, в которое произошло действие. Создан API HTTP-сервера. HTTP_LOG_FIELD_TIME
Имя службы и номер экземпляра s-sitename Имя и номер экземпляра интернет-службы, которые выполнялись на клиенте. ServiceName HTTP_LOG_FIELD_SITE_NAME
Server 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) требуется только для динамических страниц. UriQuery HTTP_LOG_FIELD_URI_QUERY
Порт сервера s-port Номер порта сервера, настроенный для службы. ServerPort HTTP_LOG_FIELD_SERVER_PORT
Имя пользователя cs-username Имя прошедшего проверку пользователя, который подключился к серверу. Анонимные пользователи обозначаются дефисом. UserName HTTP_LOG_FIELD_USER_NAME
IP-адрес клиента c-ip IP-адрес отправившего запрос клиента. ClientIp HTTP_LOG_FIELD_CLIENT_IP
Версия протокола cs-version Версия протокола HTTP, используемая клиентом. Создан API HTTP-сервера. HTTP_LOG_FIELD_VERSION
Агент пользователя cs(User-Agent) Тип браузера, используемый клиентом. UserAgent HTTP_LOG_FIELD_USER_AGENT
Куки-файл cs(Cookie) Содержимое файла cookie, отправленного или полученного, если таковое есть. Куки-файл HTTP_LOG_FIELD_COOKIE
Referrer cs(Referrer) Сайт, который пользователь в последний раз посещал. Этот сайт предоставил ссылку на текущий сайт. Referrer HTTP_LOG_FIELD_REFERRER
Узел cs-host Имя заголовка узла, если таковое есть. Узел HTTP_LOG_FIELD_HOST
Состояние HTTP sc-status Код состояния HTTP. ProtocolStatus HTTP_LOG_FIELD_STATUS
Подсостояние протокола sc-substatus Код ошибки подсостояние. SubStatus HTTP_LOG_FIELD_SUB_STATUS
Состояние Win32 sc-win32-status Код состояния Windows. Win32Status HTTP_LOG_FIELD_WIN32_STATUS
Отправлено байт sc-байты Число байт, отправленных сервером. Создан API HTTP-сервера. HTTP_LOG_FIELD_BYTES_SENT
Получено байт cs-байты Количество байтов, полученных и обработанных сервером. Создан API HTTP-сервера. HTTP_LOG_FIELD_BYTES_RECV
Затраченное время затраченное время Количество времени, затраченное на выполнение действия (в миллисекундах). Создан API HTTP-сервера. HTTP_LOG_FIELD_TIME_TAKEN
Идентификатор потока streamid Идентификатор потока. Создан API HTTP-сервера. HTTP_LOG_FIELD_STREAM_ID

 

Файл журнала является настраиваемым текстовым форматом ASCII. Префиксы полей в файле определяются следующим образом:

Prefix Описание
s Действия сервера.
с Действия клиента.
Sc Действия между сервером и клиентом.
cs Действия между клиентом и сервером.

 

Приложение может выбрать одно или несколько полей расширенного файла журнала W3C, однако не все поля будут содержать сведения. Для выбранных полей, для которых нет сведений, в качестве заполнителя отображается дефис (-). Если поле содержит непечатаемый символ, API HTTP-сервера заменяет его знаком "плюс" (+), чтобы сохранить формат файла журнала. Обычно это происходит с вирусными атаками, когда, например, злонамеренный пользователь отправляет возврат каретки и каналы строк, которые, если они не заменены знаком "плюс" (+), нарушают формат файла журнала. Поля разделяются пробелами.

Если поле включено группой URL-адресов или сеансом сервера, но не выбрано для запроса, оно отображается в файле журнала с дефисом (-) в качестве заполнителя.

Файлы журналов создаются при поступлении первого запроса в группу URL-адресов или сеанс сервера. Они не создаются при настройке ведения журнала. В следующем примере показана первая запись файла журнала W3C с включенными полями IP-адрес клиента, имя пользователя, IP-адрес сервера, порт сервера, метод, URI Stem, URI Query, Status и User Agent:

#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)

Затраченное время поле инициализируется, когда API HTTP-сервера получает первый байт перед анализом запроса. Затраченная метка времени останавливается при завершении последней отправки. Затраченное время не отражает время в сети. Первый запрос к сайту показывает немного больше времени, чем другие аналогичные запросы, так как API HTTP-сервера открывает файл журнала с первым запросом.