Wskazówki: tworzenie odbiorników logu niestandardowego (C# i Visual Basic)

W tym przewodniku pokazano, jak utworzyć niestandardowy odbiornik dziennika i skonfigurować go do nasłuchiwania danych wyjściowych My.Application.Log obiektu.

Wprowadzenie

Odbiorniki dziennika muszą dziedziczyć z TraceListener klasy.

Aby utworzyć odbiornik

  • W aplikacji utwórz klasę o nazwie SimpleListener , która dziedziczy z TraceListenerklasy .

    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
    

    Metody Write i WriteLine , wymagane przez klasę bazową, wywołają metodę MsgBox w celu wyświetlenia ich danych wejściowych.

    Atrybut HostProtectionAttribute jest stosowany do Write metod i WriteLine , aby ich atrybuty były zgodne z metodami klasy bazowej. Atrybut HostProtectionAttribute umożliwia hostowi, który uruchamia kod, aby określić, że kod uwidacznia synchronizację ochrony hosta.

    Uwaga

    Atrybut HostProtectionAttribute jest skuteczny tylko w aplikacjach niezarządzanych hostujących środowisko uruchomieniowe języka wspólnego i implementujących ochronę hosta, taką jak SQL Server.

Aby upewnić się, że My.Application.Log używa odbiornika dziennika, należy zdecydowanie nazwać zestaw zawierający odbiornik dziennika.

Następna procedura zawiera kilka prostych kroków tworzenia silnie nazwanego zestawu odbiornika dziennika. Aby uzyskać więcej informacji, zobacz Tworzenie i używanie zestawów o silnych nazwach.

Aby zdecydowanie nazwać zestaw odbiornika dziennika

  1. Wybierz projekt w Eksplorator rozwiązań. W menu Projekt wybierz pozycję Właściwości.

  2. Kliknij kartę Podpisywanie .

  3. Wybierz pole Podpisywanie zestawu.

  4. Wybierz pozycję <Nowy> z listy rozwijanej Wybierz plik klucza silnej nazwy.

    Zostanie otwarte okno dialogowe Tworzenie silnego klucza nazwy.

  5. Podaj nazwę pliku klucza w polu Nazwa pliku klucza.

  6. Wprowadź hasło w polach Wprowadź hasło i Potwierdź hasło .

  7. Kliknij przycisk OK.

  8. Ponownie skompiluj aplikację.

Dodawanie odbiornika

Teraz, gdy zestaw ma silną nazwę, należy określić silną nazwę odbiornika, aby My.Application.Log używał odbiornika dziennika.

Format silnie nazwanego typu jest następujący.

<nazwa typu, <nazwa>> zestawu, <numer> wersji, <kultura>, <silna nazwa>

Aby określić silną nazwę odbiornika

  • Poniższy kod pokazuje, jak określić silnie nazwaną nazwę typu dla elementu SimpleListener.

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

    Silna nazwa typu zależy od projektu.

Silną nazwą można dodać odbiornik do My.Application.Log kolekcji log-listener.

Aby dodać odbiornik do pliku My.Application.Log

  1. Kliknij prawym przyciskiem myszy plik app.config w Eksplorator rozwiązań i wybierz polecenie Otwórz.

    — lub —

    Jeśli istnieje plik app.config:

    1. W menu Project (Projekt) wybierz pozycję Add New Item (Dodaj nowy element).

    2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik konfiguracji aplikacji.

    3. Kliknij przycisk Dodaj.

  2. Znajdź sekcję <listeners> w <source> sekcji z atrybutem name "DefaultSource", znajdującym się w <sources> sekcji. Sekcja <sources> znajduje się w <system.diagnostics> sekcji w sekcji najwyższego poziomu <configuration> .

  3. Dodaj ten element do <listeners> sekcji:

    <add name="SimpleLog" />
    
  4. Znajdź sekcję <sharedListeners> w <system.diagnostics> sekcji w sekcji najwyższego poziomu <configuration> .

  5. Dodaj ten element do tej <sharedListeners> sekcji:

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

    Zmień wartość na SimpleLogStrongName silną nazwę odbiornika.

Zobacz też