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