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