Перейти к содержимому

Как посмотреть логи iis

  • автор:

Диагностика журналов трассировки событий Windows IIS

В этой статье описывается Microsoft IIS трассировки событий IIS для журналов Windows (ETW) собирает различные журналы, связанные с IIS.

Оригинальная версия продукта: службы IIS
Исходный номер базы знаний: 2697604

Аннотация

Эта диагностика трассировки событий Windows IIS собирает различные связанные журналы, журналы событий и позволяет пользователю записывать журнал трассировки трассировки ТРАССИРОВКИ IIS. В следующих таблицах приведены собранные сведения.

Операционная система

Описание
Имя компьютера:
Имя ОС:
Последняя перезагрузка и время работы:
Antimalware:
Контроль учетных записей пользователей:
Пользователя:

Компьютерная система

Описание
Модель компьютера:
Процессоры:
Домен компьютера:
Роль:

Файлы журнала событий

Описание Имя файла
Журнал событий приложения _evt_Application.evtx
Журнал системных событий _evt_System.evtx
Журнал событий безопасности _evt_Security.evtx
Журнал административных событий конфигурации IIS _evt_IISConfiguration-Administrative.evtx
Журнал операционных событий конфигурации IIS _evt_IISConfiguration-Administrative.evtx

Файлы журналов IIS

Описание Имя файла
Журналы ошибок HTTP _HttpErrorLogs.zip
Файлы журналов IIS _IISLogs.zip
Журнал трассировки событий Windows IIS/HTTP _IISEtwLogFiles.zip

Журналы установки для IIS

Описание Имя файла
Журнал установки IIS _IIS7.log
Журнал установки CBS _CBS.log

Дополнительные сведения

Если пользователь выбирает сбор журнала трассировки событий Windows IIS/HTTP, диагностика журналов трассировки событий Windows IIS включает трассировку трассировки трассировки событий Windows IIS с именем трассировки SDP трассировки трассировки событий Windows IIS. Диагностика автоматически остановит эту трассировку, когда пользователь нажмет кнопку «Далее » во время выполнения трассировки. Если пользователь нажимает кнопку «Отмена», он должен остановить трассировку с помощью следующей команды из командной строки администрирования:

LogMan.exe stop "IIS ETW SDP Trace" -ets 
  • Сведения о службах автоматического устранения неполадок Майкрософт и платформе диагностики поддержки
  • Часто задаваемые вопросы о средстве служба поддержки Майкрософт диагностики (MSDT)

Как настроить IIS сервер для получения детальных лог-файлов

1. В панели управления необходимо выбрать Админитрирование, и найти иконку Internet Information Services (IIS) Manager.

2. В окне Internet Information Services (IIS) Manager, откройте раздел _ИМЯ_СЕРВЕРА_, затем откройте в нем раздел Web Sites

3. Щелкните правой кнопкой на этом разделе и выберите Свойства

Open Website Properties

4. На закладке Web Site выберите W3C Extended Log File Format, и нажмите кнопку Свойства.

Select W3C Extended Log File Format

5. Выберите подходящий интервал обновления лога, и выберите закладку Дополнительно

Select Schedule Iterval

6. Пометьте все необходимые параметры, как показано ниже

Mark logging options

7. Все, Ваш сервер готов к сохранению всех необходимых статистических данных. По умолчанию, все лог-файлы IIS сервера хрянятся в папке %SYSTEMROOT%/System32/LogFiles

Настройка ведения журнала в IIS

Можно настроить ведение журналов на веб-сервере или веб-сайте, записывающем информацию о HTTP-запросах и ошибках. Сведения в журнале могут помочь провести диагностику или оптимизацию веб-сайта.

Предварительные требования

Чтобы получить максимум от этого учебника, необходимо иметь компьютер, который работает под управлением одной из следующих операционных систем:

  • Windows Server® 2012
  • Windows® 8

Настройка ведения журнала на уровне сайта

Эту процедуру можно выполнить с помощью пользовательского интерфейса или путем непосредственного изменения файлов конфигурации.

Настройка ведения журнала на уровне сайта с помощью пользовательского интерфейса

  1. Откройте диспетчер служб IIS.
    • Для Windows Server 2012 на начальной странице щелкните плитку диспетчер сервера и нажмите кнопку ОК. В Диспетчере серверов откройте меню Сервис и выберите пункт Диспетчер служб Internet Information Services (IIS).
    • Для Windows 8 на начальной странице введите панель управления, а затем щелкните значок панель управления в результатах поиска. На экране панели управления выберите раздел Система и безопасность, выберите Администрирование,а затем щелкните пункт Диспетчер служб IIS.
  2. В древовидном представлении Подключения выберите ваш веб-сайт.
  3. В представлении Просмотр возможностей дважды щелкните Ведение журнала.
  4. На странице Ведение журнала в пункте Файл журнала раздела Формат выберите один из следующих форматов файлов журналов:
    • IIS: использовать файл журнала в формате Microsoft IIS для записи сведений о сайте. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля разделяются запятыми, а для указания времени записывается местное время. Дополнительные сведения о формате файла журнала IIS см. в разделе Формат файла журнала IIS (IIS 6.0).
    • NCSA: использование файлов журнала общего формата Национального центра сверхмощных вычислений (NCSA) для регистрации сведений об узле. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля отделяются пробелами, а время записывается как местное время со смещением относительно UTC. Дополнительные сведения о формате файла журнала NCSA см. в статье Общий формат файла журнала NCSA (IIS 6.0).
    • W3C: использование централизованного формата файла журнала W3C для записи сведений обо всех сайтах на сервере. Этот формат обрабатывается HTTP.sys и имеет настраиваемый текстовый формат ASCII, что означает, что можно указать поля, которые записываются в журнал. Укажите поля, которые записываются в журнал, в диалоговом окне Поля ведения журнала W3C, нажав кнопку Выбрать поля на странице Ведение журнала. Поля отделяются пробелами, а время записывается в формате UTC. Дополнительные сведения о формате файла журнала W3C см. в разделе Расширенный формат файла журнала W3C (IIS 6.0).
    • Настраиваемые: использование настраиваемого формата для пользовательского модуля ведения журнала. При выборе этого параметра страница Ведение журнала будет отключена, так как настраиваемое ведение журнала невозможно настроить в диспетчере IIS. Дополнительные сведения об использовании пользовательских форматов файлов журналов см. в статье Пользовательские модули ведения журнала (IIS 6.0).
  5. В разделе Каталог укажите путь для хранения файла журнала. Значение по умолчанию — %SystemDrive%\inetpub\logs\LogFiles .

Примечание Рекомендуется хранить файлы журналов, например журналы трассировки неудачных запросов, в каталоге, отличном от %systemroot% .

  • Расписание: создание нового файла журнала на основании одного из следующих значений.
    • Каждый час: новый файл журнала создается каждый час.
    • Ежедневно: новый файл журнала создается каждый день.
    • Еженедельно: новый файл журнала создается каждую неделю.
    • Ежемесячно: новый файл журнала создается ежемесячно.

    Примечание Независимо от этого параметра в метках времени текущего файла журнала будет использоваться формат времени, соответствующий выбранному в списке Формат формату журнала. Например, для журналов в форматах NCSA и W3C для отметок времени применяется формат UTC.

    Настройка ведения журнала для отдельных веб-сайтов на уровне сервера

    Эту процедуру можно выполнить с помощью пользовательского интерфейса или путем непосредственного изменения файлов конфигурации.

    Настройка ведения журнала для каждого сайта на уровне сервера с помощью пользовательского интерфейса

    1. В дереве представления Подключения диспетчера IIS выберите веб-сервер.
    2. В представлении Просмотр возможностей дважды щелкните Ведение журнала.
    3. На странице Ведение журнала в разделе Один файл журнала для каждого узла выберите Узел в раскрывающемся списке. По умолчанию выбран параметр Узел.
    4. На странице Ведение журнала в пункте Файл журнала раздела Формат выберите один из следующих форматов файлов журналов:
      • IIS: использовать файл журнала в формате Microsoft IIS для записи сведений о сайте. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля разделяются запятыми, а для указания времени записывается местное время. Дополнительные сведения о формате файла журнала IIS см. в разделе Формат файла журнала IIS (IIS 6.0).
      • NCSA: использование файлов журнала общего формата Национального центра сверхмощных вычислений (NCSA) для регистрации сведений об узле. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля отделяются пробелами, а время записывается как местное время со смещением относительно UTC. Дополнительные сведения о формате файла журнала NCSA см. в статье Общий формат файла журнала NCSA (IIS 6.0).
      • W3C: использование централизованного формата файла журнала W3C для записи сведений обо всех сайтах на сервере. Этот формат обрабатывается HTTP.sys и имеет настраиваемый текстовый формат ASCII, что означает, что можно указать поля, которые записываются в журнал. Укажите поля, которые записываются в журнал, в диалоговом окне Поля ведения журнала W3C, нажав кнопку Выбрать поля на странице Ведение журнала. Поля отделяются пробелами, а время записывается в формате UTC. Дополнительные сведения о формате файла журнала W3C см. в разделе Расширенный формат файла журнала W3C (IIS 6.0).
      • Настраиваемые: использование настраиваемого формата для пользовательского модуля ведения журнала. При выборе этого параметра страница Ведение журнала будет отключена, так как настраиваемое ведение журнала невозможно настроить в диспетчере IIS. Дополнительные сведения об использовании пользовательских форматов файлов журналов см. в статье Пользовательские модули ведения журнала (IIS 6.0).
    5. В разделе Каталог укажите путь для хранения файла журнала. Значение по умолчанию — %SystemDrive%\inetpub\logs\LogFiles .

    Примечание Рекомендуется хранить файлы журналов, например журналы трассировки неудачных запросов, в каталоге, отличном от %systemroot% .

    • Расписание: создание нового файла журнала на основании одного из следующих значений.
      • Каждый час: новый файл журнала создается каждый час.
      • Ежедневно: новый файл журнала создается каждый день.
      • Еженедельно: новый файл журнала создается каждую неделю.
      • Ежемесячно: новый файл журнала создается ежемесячно.

      Примечание Независимо от этого параметра в метках времени текущего файла журнала будет использоваться формат времени, соответствующий выбранному в списке Формат формату журнала. Например, для журналов в форматах NCSA и W3C для отметок времени применяется формат UTC.

      Настройка ведения журнала для отдельных серверов на уровне сервера

      Эту процедуру можно выполнить с помощью пользовательского интерфейса или путем непосредственного изменения файлов конфигурации.

      Настройка ведения журнала для каждого сервера на уровне сервера с помощью пользовательского интерфейса

      1. В дереве представления Подключения диспетчера IIS выберите веб-сервер.
      2. В представлении Просмотр возможностей дважды щелкните Ведение журнала.
      3. На странице Ведение журнала в разделе Один файл журнала для каждого узла выберите Сервер в раскрывающемся списке. По умолчанию выбран параметр Узел.
      4. На странице Ведение журнала в пункте Файл журнала раздела Формат выберите один из следующих форматов файлов журналов:
        • IIS: использовать файл журнала в формате Microsoft IIS для записи сведений о сайте. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля разделяются запятыми, а для указания времени записывается местное время. Дополнительные сведения о формате файла журнала IIS см. в разделе Формат файла журнала IIS (IIS 6.0).
        • NCSA: использование файлов журнала общего формата Национального центра сверхмощных вычислений (NCSA) для регистрации сведений об узле. Этот формат обрабатывается HTTP.sys и имеет фиксированный текстовый формат ASCII, что означает, что нельзя настраивать поля, которые записываются в журнал. Поля отделяются пробелами, а время записывается как местное время со смещением относительно UTC. Дополнительные сведения о формате файла журнала NCSA см. в разделе Общий формат файла журнала NCSA (IIS 6.0).
        • W3C: использование централизованного формата файла журнала W3C для записи сведений обо всех сайтах на сервере. Этот формат обрабатывается HTTP.sys и имеет настраиваемый текстовый формат ASCII, что означает, что можно указать поля, которые записываются в журнал. Укажите поля, которые записываются в журнал, в диалоговом окне Поля ведения журнала W3C, нажав кнопку Выбрать поля на странице Ведение журнала. Поля отделяются пробелами, а время записывается в формате UTC. Дополнительные сведения о формате файла журнала W3C см. в разделе Расширенный формат файла журнала W3C (IIS 6.0).
        • Настраиваемые: использование настраиваемого формата для пользовательского модуля ведения журнала. При выборе этого параметра страница Ведение журнала становится отключенной, так как настраиваемое ведение журнала невозможно настроить в диспетчере IIS. Дополнительные сведения об использовании пользовательских форматов файлов журнала см. в разделе Пользовательские модули ведения журнала (IIS 6.0).
      5. В разделе Каталог укажите путь для хранения файла журнала. Значение по умолчанию — %SystemDrive%\inetpub\logs\LogFiles .

      Примечание Рекомендуется хранить файлы журналов, такие как журналы трассировки неудачных запросов, в каталоге, отличном от %systemroot% .

      • Расписание: создание нового файла журнала на основании одного из следующих значений.
        • Каждый час: новый файл журнала создается каждый час.
        • Ежедневно: новый файл журнала создается каждый день.
        • Еженедельно: новый файл журнала создается каждую неделю.
        • Ежемесячно: новый файл журнала создается ежемесячно.

        Примечание Независимо от этого параметра в метках времени текущего файла журнала будет использоваться формат времени, соответствующий выбранному в списке Формат формату журнала. Например, для журналов в форматах NCSA и W3C для отметок времени применяется формат UTC.

        Выбор полей W3C для занесения в журнал

        Эту процедуру можно выполнить с помощью пользовательского интерфейса или путем непосредственного изменения файлов конфигурации.

        Чтобы выбрать поля W3C для записи в журнал с помощью пользовательского интерфейса

        1. В представлении Просмотр возможностей диспетчера IIS дважды щелкните Ведение журнала.
        2. На странице Ведение журнала в разделе Файл журнала области Формат щелкните Выбрать поля.
        3. В диалоговом окне Поля ведения журнала W3C выберите один или несколько из следующих вариантов:
          • Дата (date): дата запроса.
          • Время (time): время запроса в формате UTC.
          • IP-адреса клиента (c-ip): IP-адрес клиента, выполнившего запрос.
          • Имя пользователя (cs-username): имя пользователя, прошедшего проверку подлинности и осуществившего доступ к серверу. Анонимные пользователи обозначаются дефисом.
          • Имя службы (s-sitename): номер экземпляра сайта, который выполнил запрос.
          • Имя сервера (s-computername): имя сервера, на котором была создана запись файла журнала.
          • IP-адрес сервера (s-ip): IP-адрес сервера, на котором была создана запись файла журнала.
          • Порт сервера (s-port): номер порта сервера, настроенный для службы.
          • Метод (cs-method): запрошенное действие, например метод GET.
          • Ресурс URI (cs-uri-stem): универсальный идентификатор ресурса (или целевой объект) действия.
          • Запрос URI (cs-uri-query): запрос (если таковой имеется), который пытался выполнить клиент. Запрос универсального кода ресурса (URI) требуется только для динамических страниц.
          • Состояние протокола (sc-status): код состояния HTTP или FTP.
          • Подчиненное состояние протокола (sc-substatus): код подчиненного состояния HTTP или FTP.
          • Состояние Win32 (sc-win32-status): код состояния Windows.
          • Отправлено байт (sc-bytes): количество байт, отправленных сервером.
          • Получено байт (cs-bytes): количество байт, полученных сервером.
          • Затраченное время (time-taken): количество времени, затраченное на выполнение действия (в миллисекундах).
          • Версия протокола (cs-version): версия протокола, используемая клиентом.
          • Узел (cs-host): имя узла, если оно существует.
          • Агент пользователя (cs(UserAgent)): тип браузера, используемый клиентом.
          • Файл cookie (cs(Cookie)): содержимое отправленного или полученного файла cookie, если таковое имеется.
          • Referrer (cs(Referrer))): сайт, который пользователь в последний раз посещал. Этот сайт предоставил ссылку на текущий сайт.
        4. Щелкните Применить в области Действия.

        Настройка параметров смены файла журнала

        Эту процедуру можно выполнить с помощью пользовательского интерфейса или путем непосредственного изменения файлов конфигурации.

        Настройка параметров смены файла журнала с помощью пользовательского интерфейса

        1. В представлении Просмотр возможностей диспетчера IIS дважды щелкните Ведение журнала.
        2. На странице Ведение журнала в разделе Смена файла журнала выберите один из следующих вариантов.
          • Расписание: создание нового файла журнала на основании одного из следующих значений.
            • Каждый час: новый файл журнала создается каждый час.
            • Ежедневно: новый файл журнала создается каждый день.
            • Еженедельно: новый файл журнала создается каждую неделю.
            • Ежемесячно: новый файл журнала создается ежемесячно.
          • Максимальный размер файла (в байтах): новый файл журнала создается при достижении файлом определенного размера (в байтах). Минимальный размер файла — 1048576 байт. Если установленное значение этого атрибута меньше, чем 1 048 576 байтов, неявно принимается значение по умолчанию, равное 1 048 576 байтам.
          • Не создавать новый файл журнала. Этот параметр означает, что существует один файл журнала, который продолжает увеличиваться по мере записи в журнал. Если для узла используется один файл журнала, это упрощает работу со средствами анализа журналов, однако большой размер файла журнала может снизить производительность сервера.
        3. Выберите Использовать местное время для именования и смены файлов , чтобы указать, что для именования файлов журнала и времени для смены файлов журнала используется локальное время сервера. Если этот параметр не выбран, используется время в формате UTC.

        Примечание Независимо от этого параметра в метках времени текущего файла журнала будет использоваться формат времени, соответствующий выбранному в списке Формат формату журнала. Например, для журналов в форматах NCSA и W3C для отметок времени применяется формат UTC.

        См. также:

        • Развертывание веб-сайта ASP.NET на IIS
        • Build a Classic ASP Website on IIS
        • Создание статического веб-сайта в IIS
        • Развертывание веб-сайта PHP в IIS
        • Развертывание FTP-сайта на IIS
        • Построение веб-фермы с серверами IIS
        • Средство развертывания веб-сервера (IIS) с поддержкой размещения: обзор сценария

        Анализ проблем в приложениях с использованием журналов IIS

        Пытались ли вы когда-нибудь устранять проблемы в приложении или отлаживать его, не видев его код? Было ли у вас когда-нибудь плохо работающее приложение, и ни браузер, ни это приложение не предоставляло полезного кода ошибки?

        Я неоднократно сталкивался с обоими случаями, и было бы неплохо подготовиться к ним как к неизбежности. Методики, описываемые в этой статье, помогут анализировать проблемы в любом приложении или системе, выполняемой в IIS, независимо от платформы, на которой они кодировались. Эти методики помогали мне анализировать приложения и веб-сайты в самых разнообразных ситуациях, особенно на устройствах, отличных от ПК, — этот сценарий становится нормой в наши дни. В одном из последних случаев эти методики помогли мне обнаружить, почему видеоролики не отображались на устройствах Apple, хотя нормально показывались на устройствах с Windows.

        Некоторые соображения

        Существует много методик для отладки ASP.NET- и других веб-приложений, выполняемых под управлением IIS. Сам браузер зачастую генерирует специфическую ошибку или набор ошибок, которых достаточно для решения проблем.

        Ну а если этой информации не достаточно? Вот здесь-то и полезно знание нескольких дополнительных методик. Самая простая из них также является самой быстрой и общеизвестной: выполнение приложения непосредственно на сервере. Иногда серверы не сконфигурированы для такого варианта, но, если вы сможете это сделать, сервер предоставит больше полезной отладочной информации, чем внешний компьютер. Это поведение, очевидно, встроено Microsoft в целях безопасности. Чтобы получить еще больше данных в браузере на сервере, отключите параметр Show friendly HTTP error messages, который вы найдете в Internet Explorer в меню Internet Options | Advanced.

        Иногда нужно больше информации, и тогда требуется протоколирование. Microsoft встроила мощные механизмы протоколирования в свои серверы, которые чрезвычайно полезны при анализе проблем при условии, что вы знаете, что и где искать.

        Включение протоколирования в IIS

        Первый шаг — включить протоколирование Windows на сервере. Это можно сделать несколькими способами. Этапы этих процедур на практике могут варьироваться (иногда значительно) в зависимости от того, с какой версией Windows Server вы имеете дело.

        Перечисление этих этапов или глубокое описание преимуществ и недостатков каждого из способов выходит за рамки этой статьи. Здесь я просто укажу: чтобы правильно использовать протоколирование для отладки своих приложений, вы должны включать его до возникновения ошибок. Массу полезной информации вы найдете в двух статьях MSDN по Windows Server 2003 и 2012: «How to configure Web site logging in Windows Server 2003» (bit.ly/cbS3xZ) и «Configure Logging in IIS» (bit.ly/18vvSgT). Если они не отвечают вашим потребностям, есть масса других онлайновых статей по включению протоколирования в IIS для других версий Windows Server.

        Определение правильного идентификационного номера

        Включив протоколирование, вам нужно найти в IIS идентификационный номер (ID number) анализируемого вами веб-сайта. Это крайне важно, поскольку на серверах обычно размещается более одного веб-сайта, и пытаться найти папку журналов вручную может оказаться устрашающей задачей. (Я как-то пытался сделать это на сервере, выполняющем 45 веб-сайтов, и эта задача оказалась практически невозможной.)

        Откройте IIS Manager, чтобы отобразить все размещенные веб-сайты. В этом примере допустим, что я пытаюсь выяснить, почему WebSite2 вдруг перестал работать или работает лишь время от времени.

        Как видно на рис. 1, ID для WebSite2 равен 3. Следующий шаг — открыть соответствующую папку log, которая обычно (но не всегда) находится в папке Inetpub. Windows, как правило, создает эту папку в корне сервера (C:), но в моем случае папка Inetpub располагается на диске D:. В руководствах рекомендуют разделять диски с операционной системой и кодом для упрощения их замены на случай аварии.

        IIS обычно хранит множество файлов в зависимости от того, как вы сконфигурировали историю сервера или как долго идет протоколирование.

        *

        Рис. 1. Определение идентификационного номера веб-сайта

        Windows именует все папки протоколирования в виде W3SVC#, где # — это ID конкретного веб-сайта. Поскольку ID отлаживаемого сайта в данном случае равен 3, файлы журналов будут размещаться в папке W3SVC3, как показано на рис. 2.

        *

        Рис. 2. Открытие папки с файлами журналов

        Просмотр файлов

        Открыв нужную папку, вы можете увидеть уйму файлов. IIS обычно хранит множество файлов в зависимости от того, как вы сконфигурировали историю сервера или как долго идет протоколирование. Чтобы найти требуемый файл, лучше всего прокрутить список до конца и открыть последний файл, хотя, если вам известно точное время возникновения ошибки, его можно найти по дате и времени в имени. Так или иначе, откройте файл, используя текстовый редактор вроде Notepad.exe.

        По-видимому, в файле будет много данных. На первый взгляд, информация может показаться зашифрованной и бесполезной, но, посмотрев повнимательнее, вы найдете немало жемчужин, скрытых в этих данных. Я рассмотрю некоторые из наиболее полезных элементов данных, записываемых процессом протоколирования.

        IIS и Windows пишут индивидуальную строку для каждого HTTP-запроса. Типичная строка выглядит так:

        2013-08-28 00:01:12 128.128.128.20 GET /default.asp - 443 - 200.200.200.17 Mozilla/4.0+(compatible; +MSIE+8.0; +Windows+NT+6.1; +WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727; +.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.3;+MS-RTC+LM+8; +.NET4.0C;+.NET4.0E; +.NET+CLR+1.1.4322) 200 0 0 15

        На первый взгляд, информация может показаться зашифрованной и бесполезной, но, посмотрев повнимательнее, вы найдете немало жемчужин, скрытых в этих данных.

        Это строка из реального журнала IIS. Данные, показанные здесь, содержатся в одном из «стандартных» форматов. Однако, поскольку этот параметр можно настраивать, нет никаких гарантий, что ваши файлы будут выглядеть точно так же, как мой пример. Поэтому, вместо того чтобы перебирать все данные, я сосредоточусь на элементах, которые представляют наибольший интерес при отладке приложения.

        Первый элемент в примере — это дата запроса. Учтите, что это дата на серверной стороне. Поскольку многие веб-приложения выполняются по всему миру на множестве серверов, развернутых в разных часовых поясах, эта дата может ввести в заблуждение. Убедитесь, что дата точно отражает реальное время возникновения ошибки. Многие серверы используют время GMT, но вы должны проверить формат.

        Затем вы увидите IP-адрес, по которому было обращение, тип HTTP-операции (GET) и файл, который запрашивался или к которому было обращение. В следующей строке примера код вызывает файл default.asp:

        128.128.128.20 GET /default.asp

        Это ценная информация, так как ошибки могли возникнуть еще на этой стадии процесса. Скажем, вы, возможно, ожидали выполнения в этот момент другого файла.

        Следующая часть строки показывает IP-адрес — источник запроса, а также принимающий порт:

        443 - 200.200.200.17

        Эта информация тоже важна, поскольку необходимо удостовериться, что анализируемый вами запрос действительно исходил из известного источника.

        Как видите, указывается и реальный порт. Эта кажущаяся несущественной порция информации жизненно важна при поиске источника проблем. Например, брандмауэр может быть сконфигурирован неправильно. За этими данными идет масса информации, в основном относящаяся к версиям:

        +MSIE+8.0; +Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2; +.NET+CLR+2.0.50727; +.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729; +InfoPath.3;+MS-RTC+LM+8; +.NET4.0C

        Например, вы видите разрядность выполняемого браузера (32- или 64-разрядный), версии CLR (для тех, кто столь глубоко ныряет во вселенную .NET) и версию .NET, установленную на сервере (в данном случае, .NET 4C).

        Добираемся до сути

        До этого момента я показывал сравнительно очевидные части записи в файле журнала. Самое важное, что вы можете видеть, какой браузер реагирует на HTTP-запрос. Иногда этого достаточно, поскольку разные браузеры могут давать разные результаты. Вот фрагмент строк, иллюстрирующих, как в файле отражаются результаты браузеров Firefox и Chrome:

        ;+rv:17.0)+Gecko/20100101+Firefox/17.0 404 0 2 109 +AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/­28.0.1500.95+Safari/537.36 200 0 0 125

        Понять, какой из нескольких HTTP-запросов следует отладить, может оказаться затруднительным, потому что все они выглядят похоже. И здесь может помочь смена браузера. Добавив запись для другого (и неожиданного) браузера, такого как Safari или Opera, вы можете упростить поиск и последующий анализ нужной записи.

        Наконец, взгляните на последние четыре элемента в строке:

        200 0 0 15

        Последняя цифра, 15, является временем ответа (в миллисекундах) на HTTP-запрос. Это очень полезный фрагмент информации. Зная, сколько времени потребовалось на обработку запроса, вам будет проще решить, соответствует ли это время «нормальному» для данного фрагмента кода, веб-сервиса или процесса.

        Возможно, вы с удивлением обнаружите, что сравнительно простые этапы в процессе требуют неожиданно много времени на обработку.

        Возможно, вы с удивлением обнаружите, что сравнительно простые этапы в процессе требуют неожиданно много времени на обработку. Возьмем недавний случай из моей практики. Некое приложение иногда входило в систему, а иногда эта операция заканчивалась неудачей, не создавая перехватываемую в браузере ошибку или вообще не сообщая ни о каких ошибках. Оно просто давало сбой. После изучения показателей времени ответов в журнале разработчики обнаружили следующее свойство в файле web.config:

        Значение этого параметра, вроде бы безобидно выставленное в 30 секунд, было просто слишком велико. Как только его уменьшили, приложение стало работать ожидаемым образом.

        Теперь (повторяя одну из предыдущих строк) я сосредоточусь на одном из важнейших параметров из рассматриваемого мной набора. Первый элемент — 200 — это собственно HTTP-ответ от IIS:

        200 0 0 15

        Такой HTTP-код ответа, 200, свидетельствует об успехе. Зачастую вы будете встречать известный тип ошибки, например 404 (не найдено) или 500 (внутренняя ошибка сервера), и это может дать вам достаточно информации для выявления и устранения причины проблемы. За официальным списком HTTP-кодов состояния обращайтесь по ссылке bit.ly/17sGpwE.

        Теперь я рассмотрю еще один случай из практики — именно он подтолкнул меня к написанию этой статьи. У меня был веб-сайт, который отлично работал на ПК, но, как только пользователи обращались к нему со своих устройств iPad, потоковое видео переставало работать. Еще хуже, что не было никакого кода ошибки; функциональность, связанная с видео, просто не работала.

        Вот где анализ журналов подтвердил свою ценность. Изучив журналы и удостоверившись, что HTTP-запрос приходил от Safari (чтобы изолировать запрос), я обнаружил, что сервер сообщал об ошибке 404. Сообщение об ошибке сбивало с толку, а сам код казался неправдоподобным, потому что ПК-версия сайта работала нормально.

        Хотя в журналах сообщалось о том, что объект не найден, я отлично знал, что нужные файлы на месте. Это подтолкнуло меня к изучению различий в обработке и хранении файлов в iOS и Windows. Проанализировав исходный код, который загружал видео, я обнаружил, что путь к видеофайлам «зашит» в исходный код и что этот путь не существует для устройств iPad под управлением iOS. Это и было причиной ошибки 404.

        Здесь важно отметить, что все симптомы указывали на что угодно, но только не на истинную причину. Например, такая проблема обычно решается проверкой наличия неподдерживаемых media-типов (или Multipurpose Internet Mail Extensions [MIME]) в IIS. Однако, если бы проблема заключалась в отсутствующем MIME-типе, код ошибки был бы HTTP 415 (неподдерживаемый media-тип) или аналогичным, а в журналах об этом не сообщалось. Отладка с применением журналов IIS стала решающим фактором в поиске источника проблемы. Я сэкономил массу времени, увидев истинный код ошибки и исследовав причины его появления; если бы я пошел на поводу того, о чем сообщалось, то потратил бы гораздо больше времени. Еще раз подчеркиваю: знание того, как читать журналы, позволяет успешно решить проблему.

        Заключение

        Файлы журналов могут быть мощным средством в отладке и анализе проблем приложений (даже в «слепых» ситуациях) при условии, что вы знаете, где их искать и что означают те или иные данные в них. Анализ данных в журналах — самый простой метод устранения проблем.

        Конечно, такой метод требует опыта и некоторых знаний, но, как только вы освоитесь, вы сможете отлаживать большинство приложений в IIS и устранять многие проблемы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *