Wskazówki: zmienianie, gdzie My.Application.Log zapisuje informacje (Visual Basic)

Obiekty i My.Log umożliwiają My.Application.Log rejestrowanie informacji o zdarzeniach występujących w aplikacji. W tym przewodniku pokazano, jak zastąpić ustawienia domyślne i spowodować Log zapisanie obiektu w innych odbiornikach dziennika.

Wymagania wstępne

Obiekt Log może zapisywać informacje w kilku odbiornikach dziennika. Przed zmianą konfiguracji należy określić bieżącą konfigurację odbiorników dziennika. Aby uzyskać więcej informacji, zobacz Przewodnik: określanie, gdzie my.Application.Log zapisuje informacje.

Warto zapoznać się z tematem Instrukcje: zapisywanie informacji o zdarzeniach w pliku tekstowym lub Instrukcje: zapisywanie w dzienniku zdarzeń aplikacji.

Aby dodać odbiorniki

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

    - lub -

    Jeśli nie ma pliku 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" w <sources> sekcji . Sekcja <sources> znajduje się <system.diagnostics> w sekcji w sekcji najwyższego poziomu <configuration> .

  3. Dodaj te elementy do tej <listeners> sekcji.

    <!-- Uncomment to connect the application file log. -->
    <!-- <add name="FileLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="EventLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="Delimited" /> -->
    <!-- Uncomment to connect the XML log. -->
    <!-- <add name="XmlWriter" /> -->
    <!-- Uncomment to connect the console log. -->
    <!-- <add name="Console" /> -->
    
  4. Usuń komentarz z odbiorników dziennika, które mają odbierać Log komunikaty.

  5. Znajdź sekcję <sharedListeners> w <system.diagnostics> sekcji w sekcji najwyższego poziomu <configuration> .

  6. Dodaj te elementy do tej <sharedListeners> sekcji.

    <add name="FileLog"
         type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
               Microsoft.VisualBasic, Version=8.0.0.0,
               Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         initializeData="FileLogWriter" />
    <add name="EventLog"
         type="System.Diagnostics.EventLogTraceListener,
               System, Version=2.0.0.0,
               Culture=neutral, PublicKeyToken=b77a5c561934e089"
         initializeData="sample application"/>
    <add name="Delimited"
         type="System.Diagnostics.DelimitedListTraceListener,
               System, Version=2.0.0.0,
               Culture=neutral, PublicKeyToken=b77a5c561934e089"
         initializeData="c:\temp\sampleDelimitedFile.txt"
         traceOutputOptions="DateTime" />
    <add name="XmlWriter"
         type="System.Diagnostics.XmlWriterTraceListener,
               System, Version=2.0.0.0,
               Culture=neutral, PublicKeyToken=b77a5c561934e089"
         initializeData="c:\temp\sampleLogFile.xml" />
    <add name="Console"
         type="System.Diagnostics.ConsoleTraceListener,
               System, Version=2.0.0.0,
               Culture=neutral, PublicKeyToken=b77a5c561934e089"
         initializeData="true" />
    
  7. Zawartość pliku app.config powinna być podobna do następującego kodu 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"/>
              <!-- Uncomment to connect the application file log. -->
              <!-- <add name="FileLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="EventLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="Delimited" /> -->
              <!-- Uncomment to connect the XML log. -->
              <!-- <add name="XmlWriter" /> -->
              <!-- Uncomment to connect the console log. -->
              <!-- <add name="Console" /> -->
            </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"
               initializeData="FileLogWriter" />
          <add name="EventLog"
               type="System.Diagnostics.EventLogTraceListener,
                     System, Version=2.0.0.0,
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="sample application"/>
          <add name="Delimited"
               type="System.Diagnostics.DelimitedListTraceListener,
                     System, Version=2.0.0.0,
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleDelimitedFile.txt"
               traceOutputOptions="DateTime" />
          <add name="XmlWriter"
               type="System.Diagnostics.XmlWriterTraceListener,
                     System, Version=2.0.0.0,
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleLogFile.xml" />
          <add name="Console"
               type="System.Diagnostics.ConsoleTraceListener,
                     System, Version=2.0.0.0,
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="true" />
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    

Aby ponownie skonfigurować odbiornik

  1. Znajdź element odbiornika <add> w <sharedListeners> sekcji .

  2. Atrybut type nadaje nazwę typu odbiornika. Ten typ musi dziedziczyć z TraceListener klasy. Użyj nazwy silnie nazwanego typu, aby upewnić się, że jest używany właściwy typ. Aby uzyskać więcej informacji, zobacz sekcję "Aby odwołać się do silnie nazwanego typu" poniżej.

    Niektóre typy, których można użyć, to:

    Aby uzyskać informacje o tym, gdzie inne typy odbiorników dzienników zapisują informacje, zapoznaj się z dokumentacją tego typu.

  3. Gdy aplikacja tworzy obiekt log-listener, przekazuje initializeData atrybut jako parametr konstruktora. Znaczenie atrybutu initializeData zależy od odbiornika śledzenia.

  4. Po utworzeniu odbiornika dziennika aplikacja ustawia właściwości odbiornika. Te właściwości są definiowane przez inne atrybuty w elemecie <add> . Aby uzyskać więcej informacji na temat właściwości określonego odbiornika, zobacz dokumentację dla typu tego odbiornika.

Aby odwołać się do silnie nazwanego typu

  1. Aby upewnić się, że odpowiedni typ jest używany dla odbiornika dziennika, upewnij się, że używasz w pełni kwalifikowanej nazwy typu i silnie nazwanego zestawu. Składnia silnie nazwanego typu jest następująca:

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

  2. W tym przykładzie kodu pokazano, jak określić nazwę silnie nazwanego typu dla w pełni kwalifikowanego typu "System.Diagnostics.FileLogTraceListener" w tym przypadku.

    Public Sub DisplayStrongName()
        Dim t As Type = GetType(Logging.FileLogTraceListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    Jest to dane wyjściowe i może służyć do unikatowego odwołowania się do silnie nazwanego typu, jak w powyższej procedurze "Aby dodać odbiorniki".

    Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Zobacz też