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

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

Начало работы

Прослушиватели журналов должны наследовать от класса TraceListener.

Создание прослушивателя

  • В приложении создайте класс с именем SimpleListener, который наследует от класса TraceListener.

    Public Class SimpleListener
        Inherits System.Diagnostics.TraceListener
    
        <Security.Permissions.HostProtection(Synchronization:=True)>
        Public Overloads Overrides Sub Write(ByVal message As String)
            MsgBox("Write: " & message)
        End Sub
    
        <Security.Permissions.HostProtection(Synchronization:=True)>
        Public Overloads Overrides Sub WriteLine(ByVal message As String)
            MsgBox("WriteLine: " & message)
        End Sub
    End Class
    

    Методы Write и WriteLine, которые нужны для базового класса, используют MsgBox для отображения входных данных.

    К методам Write и WriteLine применяется атрибут HostProtectionAttribute, чтобы их атрибуты соответствовали методы базового класса. Атрибут HostProtectionAttribute позволяет узлу, на котором выполняется код, проверять наличие в коде синхронизации защиты узла.

    Примечание.

    Атрибут HostProtectionAttribute действует только для неуправляемых приложений, на которых размещена среда CLR и реализована защита узлов, например для SQL Server.

Чтобы объект My.Application.Log использовал прослушиватель журнала, следует присвоить строгое имя сборке, содержащей прослушиватель журнала.

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

Задание строгого имени сборке прослушивателя журнала

  1. Выберите проект в Обозревателе решений. В меню Проект выберите Свойства.

  2. Откройте вкладку Подписание .

  3. Выберите поле Подписать сборку .

  4. Выберите "Создать"> в раскрывающемся списке "Выбор <файла ключа строгого имени".

    Откроется диалоговое окно Создание ключа строгого имени.

  5. Укажите имя для файла ключа в поле Имя файла ключа.

  6. Введите пароль в поля Введите пароль и Подтверждение пароля.

  7. Щелкните OK.

  8. Перестройте приложение.

Добавление прослушивателя

Теперь, когда сборка имеет строгое имя, необходимо определить строгое имя прослушивателя, чтобы объект My.Application.Log использовал прослушиватель журнала.

Тип со строгим именем имеет следующий формат:

<имя типа, имя>> сборки, <<номер версии, язык> и региональные> параметры, <<строгое имя>

Определение строгого имени прослушивателя

  • В следующем коде показано, как определить строгое имя типа для SimpleListener.

    Public Sub DisplaySimpleListenerStrongName()
        Dim t As Type = GetType(SimpleListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    Строгое имя типа зависит от проекта.

Можно добавить прослушиватель со строгим именем в коллекцию прослушивателей журнала My.Application.Log.

Добавление прослушивателя в My.Application.Log

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

    –или–

    Если есть файл app.config:

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

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

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

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

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

    <add name="SimpleLog" />
    
  4. Найдите раздел <sharedListeners> в разделе <system.diagnostics> в разделе <configuration> верхнего уровня.

  5. Добавьте в этот раздел <sharedListeners> следующий элемент:

    <add name="SimpleLog" type="SimpleLogStrongName" />
    

    Изменить значение SimpleLogStrongName на строгое имя прослушивателя.

См. также