В этом пошаговом руководстве демонстрируется изменение фильтрации журнала по умолчанию для объекта My.Application.Log, управление передачей информации из объекта Log в прослушиватели и управление информацией, записываемой прослушивателями. Режим записи в журнал можно изменить и после создания приложения, поскольку сведения о конфигурации хранятся в файле конфигурации приложения.
Начало работы
Каждое сообщение, записываемое объектом My.Application.Log, имеет соответствующий уровень серьезности, который можно использовать в механизмах фильтрации для управления выводом в журнал. Этот пример приложения использует методы My.Application.Log для записи в журнал нескольких сообщений с различными уровнями серьезности.
Построение примера приложения
Откройте новый проект приложения Windows в Visual Basic.
Добавьте кнопку Button1 в форму Form1.
Добавьте следующий код в обработчик событий Click кнопки Button1.
По умолчанию приложение записывает вывод в файл журнала во время закрытия приложения.
В приведенном выше примере второй вызов метода WriteEntry и вызов метода WriteException формируют вывод в журнал, а первый и последний вызовы метода WriteEntry — нет. Это обусловлено тем, что методы WriteEntry WriteException имеют уровни серьезности "Information" и "Error", которые разрешены при фильтрации журнала по умолчанию объекта My.Application.Log. Однако события с уровнями важности "Start" и "Stop" не выводятся в журнал.
Фильтрация для всех прослушивателей 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 — уровень "Information", а для перегрузки WriteException — уровень "Error".
В этой таблице описаны выводы журнала из предыдущего примера. Если параметр DefaultSwitch имеет значение по умолчанию "Information", только второй вызов метода WriteEntry и вызов метода WriteException создают вывод в журнал.
Чтобы протоколировать только события отслеживания действий
Щелкните правой кнопкой мыши файл app.config в обозревателе решений и выберите команду Открыть.
-или-
Если файл app.config отсутствует:
В меню Проект выберите пункт Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите Файл конфигурации приложения.
Нажмите кнопку Добавить.
Найдите раздел <switches> в разделе верхнего уровня <system.diagnostics> раздела <configuration>.
Найдите элемент, добавляющий параметр DefaultSwitch в коллекцию переключателей. Он должен выглядеть аналогично этому элементу.
<add name="DefaultSwitch" value="Information" />
Измените значение атрибута value на "ActivityTracing".
Содержимое файла app.config должно быть похоже на следующий XML-код:
Приложение записывает следующие сведения в вывод отладки и файл журнала.
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Закройте приложение.
Измените значение атрибута value обратно на значение "Information".
Примечание
Параметр переключения DefaultSwitch влияет только на объект My.Application.Log.Он не влияет на поведение классов .NET Framework Trace и Debug.
Индивидуальная фильтрация для прослушивателей 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>.