Пошаговое руководство. Фильтрация вывода My.Application.Log (Visual Basic)
В этом пошаговом руководстве демонстрируется изменение фильтрации журнала по умолчанию для объекта My.Application.Log
, чтобы контролировать, какие данные передаются из объекта Log
в прослушиватели и какие данные записываются прослушивателями. Режим ведения журнала можно изменить даже после создания приложения, поскольку сведения о конфигурации хранятся в файле конфигурации приложения.
Начало работы
Каждое сообщение, записываемое объектом My.Application.Log
, имеет соответствующий уровень степени серьезности, используемый механизмами фильтрации для управления выходными данными журнала. В этом примере приложения используются методы My.Application.Log
для записи нескольких сообщений журналов с различными уровнями степени серьезности.
Создание примера приложения
Откройте новый проект приложения Windows на Visual Basic.
Добавьте кнопку с именем Button1 в форму Form1.
В обработчик события 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)
Запустите приложение в отладчике.
Нажмите кнопку Button1.
Приложение записывает следующие сведения в файл выходных данных отладки и файл журнала приложения.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Закройте приложение.
Сведения о просмотре окна вывода отладочных данных приложения см. в разделе Окно вывода. Сведения о расположении файла журнала приложения см. в разделе Пошаговое руководство. Определение места записи информации для My.Application.Log.
Примечание.
По умолчанию приложение записывает выходные данные в файл журнала при закрытии приложения.
В приведенном выше примере второй вызов метода WriteEntry и вызов метода WriteException приводят к получению данных журнала, а первый и последний вызовы метода
WriteEntry
— нет. Это связано с тем, что уровнями серьезности дляWriteEntry
иWriteException
являются "Информация" и "Ошибка". Оба эти значения разрешены при фильтрации журнала по умолчанию для объектаMy.Application.Log
. Однако событиям с уровнями серьезности "Запуск" и "Остановка" запрещено создание выходных данных журнала.
Фильтрация всех прослушивателей My.Application.Log
Объект My.Application.Log
использует SourceSwitch с именем DefaultSwitch
для управления сообщениями, передаваемыми из методов WriteEntry
и WriteException
в прослушиватели журнала. DefaultSwitch
можно настроить в файле конфигурации приложения, задав в качестве его значения одно из значений перечисления SourceLevels. По умолчанию используется значение "Информация".
В этой таблице показан уровень серьезности, необходимый журналу для записи сообщения в прослушиватели с конкретным параметром 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
по умолчанию "Информация" только второй вызов метода WriteEntry
и вызов метода WriteException
формируют выходные данные журнала.
Запись в журнал только событий трассировки действий
Щелкните правой кнопкой мыши файл app.config в обозревателе решений и выберите команду Открыть.
–или–
Если файл app.config отсутствует, выполните указанные ниже действия.
В меню Проект выберите пункт Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите элемент Файл конфигурации приложения.
Нажмите кнопку Добавить.
Найдите раздел
<switches>
в разделе<system.diagnostics>
раздела<configuration>
верхнего уровня.Найдите элемент, добавляющий
DefaultSwitch
в коллекцию переключателей. Он должен выглядеть аналогично следующему элементу:<add name="DefaultSwitch" value="Information" />
Измените значение атрибута
value
данного свойства на "ActivityTracing".Содержимое файла 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>
Запустите приложение в отладчике.
Нажмите кнопку Button1.
Приложение записывает следующие сведения в файл выходных данных отладки и файл журнала приложения.
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Закройте приложение.
Измените значение атрибута
value
снова на "Информация".Примечание.
Параметр переключателя
DefaultSwitch
контролирует толькоMy.Application.Log
. На поведение классов System.Diagnostics.Trace и System.Diagnostics.Debug .NET он не влияет.
Отдельная фильтрация прослушивателей My.Application.Log
В предыдущем примере показано, как изменить фильтрацию для всех выходных данных My.Application.Log
. В этом примере демонстрируется способ фильтрации отдельных прослушивателей журнала. По умолчанию приложение имеет два прослушивателя, которые выполняют запись в файл выходных данных отладки и файл журнала приложения.
Файл конфигурации управляет поведением прослушивателей журнала, разрешая каждому из них иметь фильтр, аналогичный переключателю My.Application.Log
. Прослушиватель журнала будет выводить сообщение только в том случае, если уровень серьезности сообщения допускается фильтром DefaultSwitch
журнала и фильтром прослушивателя журнала.
В этом примере демонстрируется настройка фильтрации для нового прослушивателя отладки и добавление его в объект Log
. Прослушиватель отладки по умолчанию должен быть удален из объекта Log
, чтобы сообщения отладки поступали только из нового прослушивателя отладки.
Запись в журнал только событий трассировки действий
Щелкните правой кнопкой мыши файл app.config в обозревателе решений и выберите команду Открыть.
–или–
Если файл app.config отсутствует, выполните указанные ниже действия.
В меню Проект выберите пункт Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите элемент Файл конфигурации приложения.
Нажмите кнопку Добавить.
Щелкните правой кнопкой мыши файл app.config в обозревателе решений. Выберите команду Открыть.
Найдите раздел
<listeners>
в разделе<source>
с атрибутомname
, равным DefaultSource, в разделе<sources>
. Раздел<sources>
находится в разделе<system.diagnostics>
раздела<configuration>
верхнего уровня.Добавьте этот элемент в раздел
<listeners>
:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Найдите раздел
<sharedListeners>
в разделе<system.diagnostics>
в разделе<configuration>
верхнего уровня.Добавьте в этот раздел
<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
.Содержимое файла 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>
Запустите приложение в отладчике.
Нажмите кнопку Button1.
Приложение записывает следующие сведения в файл выходных данных приложения:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
В связи с более ограничивающим фильтром приложение записывает меньше данных в выходные данные отладки приложения.
Default Error 2 Error
Закройте приложение.
Дополнительные сведения об изменении параметров журнала после развертывания см. в разделе Работа с журналами приложения.
См. также
- Пошаговое руководство. Определение места записи информации для My.Application.Log
- Пошаговое руководство. Изменение места записи сведений для My.Application.Log
- Пошаговое руководство. Создание пользовательских прослушивателей журнала
- Практическое руководство. Запись сообщений в журнал
- Переключатели трассировки
- Запись сведений в журнал из приложения