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


Работа с журналами приложений в Visual Basic

Объекты My.Application.Log и My.Log позволяют легко записывать журнальные и трассировочные данные в логи.

Как регистрируются сообщения

Во-первых, уровень серьезности сообщения проверяется на основании свойства Switch элемента журнала TraceSource. По умолчанию только сообщения с уровнем важности "Информация" и выше передаются слушателям трассировки, указанным в коллекции журнала TraceListener. Затем каждый слушатель сравнивает серьезность сообщения со своим свойством Switch. Если серьезность сообщения достаточно высока, прослушиватель записывает сообщение.

На следующей схеме показано, как сообщение, записанное в метод WriteEntry, передается методам WriteLine прослушивателей трассировки журнала.

Схема, показывающая мой вызов из журнала.

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

Схема, показывющая конфигурацию журнала.

Где регистрируются сообщения

Если сборка не имеет файла конфигурации, объекты My.Application.Log и My.Log записываются в выходные данные отладки приложения через класс DefaultTraceListener. Кроме того, My.Application.Log объект записывается в файл журнала сборки (через FileLogTraceListener класс), а My.Log объект записывает в выходные данные веб-страницы ASP.NET (через WebPageTraceListener класс).

Выходные данные отладки можно просмотреть в окне вывода Visual Studio при запуске приложения в режиме отладки. Чтобы открыть окно вывода , щелкните пункт меню "Отладка ", наведите указатель на Windows и нажмите кнопку "Выходные данные". В окне вывода выберите "Отладка " в поле "Показать выходные данные ".

По умолчанию My.Application.Log записывает файл журнала в каталог данных приложения пользователя. Путь можно получить из FullLogFileName свойства DefaultFileLogWriter объекта. Формат этого пути выглядит следующим образом:

BasePath\CompanyName\ProductName\ProductVersion

Обычное значение для BasePath этого выглядит следующим образом.

C:\Documents and Settings\username\Данные приложения

Значения CompanyName, ProductName и ProductVersion берутся из сведений о сборке приложения. Форма имени файла журнала — AssemblyName.log, где Имя_сборки — имя файла сборки без расширения. Если требуется более одного файла журнала, например, если исходный журнал недоступен, когда приложение пытается записать в журнал, форма для имени файла журнала — AssemblyName-итерация.log, где iteration является положительным числом Integer.

Вы можете переопределить поведение по умолчанию, добавив или изменив файлы конфигурации компьютера и приложения. Дополнительные сведения см. в пошаговом руководстве: Изменение места записи сведений в My.Application.Log.

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

Объект Log имеет реализацию по умолчанию, которая работает без файла конфигурации приложения, app.config. Чтобы изменить значения по умолчанию, необходимо добавить файл конфигурации с новыми параметрами. Дополнительные сведения см. в пошаговом руководстве. Фильтрация выходных данных My.Application.Log.

Разделы конфигурации журнала находятся на <system.diagnostics> узле в главном <configuration> узле файла app.config. Сведения журнала определяются на нескольких узлах:

  • Прослушиватели для Log объекта определяются на <sources> узле с именем DefaultSource.

  • Фильтр серьезности для Log объекта определен в <switches> узле с именем DefaultSwitch.

  • Прослушиватели журналов определяются в узле <sharedListeners>.

Примеры узлов <sources>, <switches> и <sharedListeners> показаны в следующем коде.

<configuration>
  <system.diagnostics>
    <sources>
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="DefaultSwitch" value="Information" />
    </switches>
    <sharedListeners>
      <add name="FileLog"
        type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
          Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
          PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
        initializeData="FileLogWriter"
      />
    </sharedListeners>
  </system.diagnostics>
</configuration>

Изменение параметров журнала после развертывания

При разработке приложения параметры конфигурации хранятся в файле app.config, как показано в приведенных выше примерах. После развертывания приложения журнал можно настроить, изменив файл конфигурации. В приложении под управлением Windows имя этого файла — applicationName.exe.config, и оно должно находиться в той же папке, что и исполняемый файл. Для веб-приложения это файл Web.config, связанный с проектом.

Когда приложение выполняет код, который создает экземпляр класса в первый раз, он проверяет файл конфигурации для получения сведений об объекте. Это происходит при первом обращении к объекту Log для объекта Log. Система проверяет файл конфигурации только один раз для любого конкретного объекта— при первом создании объекта приложением. Поэтому может потребоваться перезапустить приложение, чтобы изменения вступили в силу.

В развернутом приложении можно включить код трассировки путем перенастройки объектов коммутатора перед запуском приложения. Как правило, это включает включение и отключение объектов переключателя или изменение уровней трассировки, а затем перезапуск приложения.

Соображения безопасности

При записи данных в журнал следует учитывать следующее:

  • Избегайте утечки сведений о пользователе. Убедитесь, что приложение записывает только утвержденные сведения в журнал. Например, журнал приложений может содержать имена пользователей, но не пароли пользователей.

  • Обеспечение безопасности расположений журналов. Любой журнал, содержащий потенциально конфиденциальную информацию, должен храниться в безопасном расположении.

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

  • Избегайте отказа в обслуживании. Если приложение записывает слишком много сведений в журнал, оно может заполнить журнал или сделать поиск важных сведений сложным.

См. также