Поделиться через


Ведение журнала 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
Время Время Время, в координированном универсальном времени (UTC), в котором произошло действие. Созданный API HTTP-сервера. HTTP_LOG_FIELD_TIME
Имя службы и номер экземпляра s-sitename Имя службы Интернета и номер экземпляра, запущенные на клиенте. Имя службы HTTP_LOG_FIELD_SITE_NAME
Имя сервера s-computername Имя сервера, на котором была создана запись файла журнала. Имя сервера HTTP_LOG_FIELD_COMPUTER_NAME
IP-адрес сервера s-ip IP-адрес сервера, на котором была создана запись файла журнала. ServerIp HTTP_LOG_FIELD_SERVER_IP
Метод cs-method Запрошенная команда, например метод GET. Метод HTTP_LOG_FIELD_METHOD
URI Stem 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 Имя прошедшего проверку подлинности пользователя, который обращается к серверу. Анонимные пользователи указываются дефисом. Имя пользователя 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
Реферер cs(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-bytes Количество полученных и обработанных сервером байтов. Созданный API HTTP-сервера. HTTP_LOG_FIELD_BYTES_RECV
Время затрачено время, затраченное Продолжительность действия в миллисекундах. Созданный API HTTP-сервера. HTTP_LOG_FIELD_TIME_TAKEN
Идентификатор потока streamid Идентификатор потока. Созданный API HTTP-сервера. HTTP_LOG_FIELD_STREAM_ID

 

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

Приставка Описание
s Действия сервера.
c Действия клиента.
sc Действия между серверами.
cs Действия между клиентами.

 

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

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

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

#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-сервера открывает файл журнала с первым запросом.