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


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

Объекты My.Applicaton.Log и My.Log упрощают запись сообщений и данных трассировки в журналы.

Как осуществляется регистрация сообщений

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

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

Вызов журнала My

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

Конфигурация журнала My

Куда выводятся сообщения

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

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

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

BasePath\CompanyName\ProductName\ProductVersion

Стандартное значение для BasePath будет следующим:

C:\Documents and Settings\username\Application Data

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

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

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

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

Разделы конфигурации журнала находятся в узле <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. Система проверяет файл конфигурации только один раз для каждого отдельного объекта — при первом создании объекта в приложении. Таким образом, необходимо перезапустить приложение, чтобы изменения вступили в силу.

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

Вопросы безопасности

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

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

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

  • Не допускайте неправильных сведений. В общем случае, приложение должно проверять все данные, введенные пользователем, перед их использованием. Это относится и к записи данных в журнал приложения.

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

См. также

Ссылки

Microsoft.VisualBasic.Logging.Log

Основные понятия

Запись сведений в журнал из приложения (Visual Basic)