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


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

В этом пошаговом руководстве показано, как изменить фильтрацию журналов по умолчанию для 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. Нажмите кнопку1.

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

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

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

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

    Замечание

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

    В приведенном выше примере второй вызов WriteEntry метода и вызов WriteException метода создает выходные данные журнала, а первые и последние вызовы WriteEntry метода не выполняются. Это связано с тем, что уровни серьёзности WriteEntry и WriteException являются "Сведения" и "Ошибка", соответственно, которые оба допускаются фильтрацией журналов объекта My.Application.Log по умолчанию. Однако события с уровнями серьезности "Пуск" и "Стоп" не позволяют создавать выходные данные журнала.

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

Объект My.Application.Log использует SourceSwitch, названный DefaultSwitch, для управления сообщениями, которые он передает от методов WriteEntry и WriteException слушателям журнала. Вы можете настроить 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 Все сообщения блокируются.

Замечание

У методов WriteEntry и WriteException есть перегрузка, которая не указывает уровень серьезности. Неявный уровень серьезности для перегрузки WriteEntry — «Информация», а неявный уровень серьезности для перегрузки WriteException — «Ошибка».

В этой таблице описываются выходные данные журнала, показанные в предыдущем примере: с параметром по умолчанию 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. Нажмите кнопку1.

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

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

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

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

    Замечание

    Настройка DefaultSwitch переключателя управляет только My.Application.Log. Он не изменяет поведение .NET System.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 с атрибутом <sources> "DefaultSource". Этот <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. Нажмите кнопку1.

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

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

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

    Default Error 2 Error

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

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

См. также