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


Пошаговое руководство. Создание пользовательских прослушивателей журналов (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 для отображения их входных данных.

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

    Замечание

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

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

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

Присвоить сильное имя сборке прослушивателя журнала

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

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

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

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

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

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

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

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

  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 на строгое имя прослушивателя.

См. также