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


Пошаговое руководство. Фильтрация вывода My.Application.Log

Обновлен: Ноябрь 2007

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

Приступая к работе

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

Чтобы создать пример приложения

  1. Откройте новый проект приложения Windows в Visual Basic.

  2. Добавьте кнопку Button1 в форму Form1.

  3. Добавьте следующий код в обработчик событий Click кнопки Button1.

    ' Activity tracing information
    My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start)
    
    ' Tracing information
    My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information)
    
    ' Create an exception to log.
    Dim ex As New ApplicationException
    ' Exception information
    My.Application.Log.WriteException(ex)
    
    ' Activity tracing information
    My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
    
  4. Запустите приложение в отладчике.

  5. Нажмите кнопку Button1.

    Приложение записывает следующие сведения в вывод отладки и файл журнала.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Закройте приложение.

Сведения о просмотре окна отладочного вывода приложения см. в разделе Окно выходных данных. Сведения о расположении файла журнала приложения см. в разделе Пошаговое руководство. Определение места записи информации для My.Application.Log.

ms172717.alert_note(ru-ru,VS.90).gifПримечание.

По умолчанию приложение записывает вывод в файл журнала во время закрытия приложения.

В приведенном выше примере второй вызов Метод WriteEntry (My.Application.Log и My.Log) и вызов Метод WriteException (My.Application.Log и My.Log) формируют вывод в журнал, а первый и последний вызовы метода WriteEntry — нет. Это обусловлено тем, что методы WriteEntryWriteException имеют уровни серьезности "Information" и "Error", которые разрешены при фильтрации журнала по умолчанию объекта My.Application.Log. Однако события с уровнями важности "Start" и "Stop" не выводятся в журнал.

Фильтрация для всех прослушивателей My.Application.Log

Объект My.Application.Log использует объект типа SourceSwitch с именем DefaultSwitch для управления передачей сообщений методами WriteEntryWriteException в прослушиватели журнала. В файле конфигурации приложения можно настроить DefaultSwitch, присвоив его значениям одно из значений перечисления SourceLevels. По умолчанию его значение равно "Information".

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

Значение DefaultSwitch

Уровень серьезности сообщения, необходимый для вывода

Critical

Critical

Error

Critical или Error

Warning

Critical, Error или Warning

Information

Critical, Error, Warning или Information

Verbose

Critical, Error, Warning, Information или Verbose

ActivityTracing

Start, Stop, Suspend, Resume или Transfer

All

Разрешены все сообщения.

Off

Заблокированы все сообщения.

ms172717.alert_note(ru-ru,VS.90).gifПримечание.

Каждый из методов WriteEntry и WriteException имеет перегрузки, в которых не указан уровень серьезности. Неявный уровень серьезности для перегрузки WriteEntry — уровень "Information", а для перегрузки WriteException — уровень "Error".

В этой таблице описаны выводы журнала из предыдущего примера. Если параметр DefaultSwitch имеет значение по умолчанию "Information", только второй вызов метода WriteEntry и вызов метода WriteException создают вывод в журнал.

Чтобы протоколировать только события отслеживания действий

  1. Щелкните правой кнопкой мыши файл app.config в обозревателе решений и выберите команду Открыть.

    либо

    Если файл app.config отсутствует:

    1. В меню Проект выберите пункт Добавить новый элемент.

    2. В диалоговом окне Добавление нового элемента выберите Файл конфигурации приложения.

    3. Нажмите кнопку Добавить.

  2. Найдите раздел <switches> в разделе верхнего уровня <system.diagnostics> раздела <configuration>.

  3. Найдите элемент, добавляющий параметр DefaultSwitch в коллекцию переключателей. Он должен выглядеть аналогично этому элементу.

    <add name="DefaultSwitch" value="Information" />

  4. Измените значение атрибута value на "ActivityTracing".

  5. Содержимое файла app.config должно быть похоже на следующий XML-код.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="ActivityTracing" />
        </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>
    
  6. Запустите приложение в отладчике.

  7. Нажмите кнопку Button1.

    Приложение записывает следующие сведения в вывод отладки и файл журнала.

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Закройте приложение.

  9. Измените значение атрибута value обратно на значение "Information".

ms172717.alert_note(ru-ru,VS.90).gifПримечание.

Параметр переключения DefaultSwitch влияет только на объект My.Application.Log. Он не влияет на поведение классов .NET FrameworkSystem.Diagnostics.Trace и System.Diagnostics.Debug.

Индивидуальная фильтрация для прослушивателей My.Application.Log

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

Файл конфигурации управляет поведением прослушивателей журнала, позволяя каждому из них иметь фильтр, аналогичный переключателю My.Application.Log. Прослушиватель журнала будет выводить сообщение, только если уровень его серьезности разрешен параметром DefaultSwitch журнала и фильтром прослушивателя журнала.

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

Чтобы протоколировать только события отслеживания действий

  1. Щелкните правой кнопкой мыши файл app.config в обозревателе решений и выберите команду Открыть.

    либо

    Если файл app.config отсутствует:

    1. В меню Проект выберите пункт Добавить новый элемент.

    2. В диалоговом окне Добавление нового элемента выберите Файл конфигурации приложения.

    3. Нажмите кнопку Добавить.

  2. Щелкните правой кнопкой мыши файл app.config в обозревателе решений. Выберите Открыть.

  3. Найдите раздел <listeners> в разделе <source> с атрибутом name, равным "DefaultSource", в разделе <sources>. Раздел <sources> находится в разделе верхнего уровня <system.diagnostics> раздела <configuration>.

  4. Добавьте этот элемент в раздел <listeners>.

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Найдите раздел <sharedListeners> в разделе <system.diagnostics> на верхнем уровне раздела <configuration>.

  6. Добавьте этот элемент в раздел <sharedListeners>.

    <add name="NewDefault" 
         type="System.Diagnostics.DefaultTraceListener, 
               System, Version=2.0.0.0, Culture=neutral, 
               PublicKeyToken=b77a5c561934e089, 
               processorArchitecture=MSIL">
        <filter type="System.Diagnostics.EventTypeFilter" 
                initializeData="Error" />
    </add>
    

    Фильтр EventTypeFilter принимает одно из значений перечисления SourceLevels в качестве атрибута initializeData.

  7. Содержимое файла app.config должно быть похоже на следующий XML-код.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
              <!-- Remove the default debug listener. -->
              <remove name="Default"/>
              <!-- Add a filterable debug listener. -->
              <add name="NewDefault"/>
            </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"/>
          <add name="NewDefault" 
               type="System.Diagnostics.DefaultTraceListener, 
                     System, Version=2.0.0.0, Culture=neutral, 
                     PublicKeyToken=b77a5c561934e089, 
                     processorArchitecture=MSIL">
            <filter type="System.Diagnostics.EventTypeFilter" 
                    initializeData="Error" />
          </add>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    
  8. Запустите приложение в отладчике.

  9. Нажмите кнопку Button1.

    Приложение записывает следующие сведения в файл журнала приложения.

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Приложение записывает меньше информации в вывод отладки приложения из-за более строгой фильтрации.

    Default Error 2 Error

  10. Закройте приложение.

Дополнительные сведения об изменении параметров журнала после развертывания см. в разделе Работа с журналами приложения в Visual Basic.

См. также

Задачи

Пошаговое руководство. Определение места записи информации для My.Application.Log

Пошаговое руководство. Изменение места записи информации для My.Application.Log

Пошаговое руководство. Создание пользовательских прослушивателей журнала

Практическое руководство. Запись сообщений в журнал

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

Переключатели трассировки

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