Sdílet prostřednictvím


Podrobné pokyny: Filtrování výstupu My.Application.Log (Visual Basic)

Tento návod ukazuje, jak změnit výchozí filtrování protokolování v My.Application.Log objektu, z důvodu kontroly jaké informace jsou předány z objektu Log do posluchače a jaké informace jsou zapsány posluchači. Můžete změnit chování protokolování i po vytvoření aplikace, protože konfigurační informace jsou uloženy v konfiguračním souboru aplikace.

Začínáme

Každá zpráva, které je zapsána pomocí My.Application.Log má přidruženou úroveň závažnosti, kterou filtrovací mechanismy používají k řízení výstupu protokolování. Tato ukázková aplikace používá metodu My.Application.Log k zapsání několik protokolových zpráv s různou úrovní závažnosti.

Chcete-li vytvořit ukázkovou aplikaci

  1. Otevřený nový Visual Basic projekt pro aplikace Windows.

  2. Přidejte tlačítko s názvem Button1 do Form1.

  3. V obslužné rutině události Click pro Button1, přidejte následující kód:

  4. Spusťte aplikace v ladicím módu.

  5. Stiskněte Button1.

    Aplikace zapíše následující informace do aplikačního výstupu ladění a protokolového souboru .

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Ukončete aplikaci.

Informace o tom, jak zobrazit výstupní okno ladění aplikace, naleznete v tématu Output Window. Informace o umístění protokolového souboru aplikace, naleznete v tématu Podrobné pokyny: Určení, kde My.Application.Log zapisuje informace (Visual Basic).

Poznámka

V výchozím nastavení, aplikace po ukončení vyprázdní výstupní protokolový soubor.

Ve výše uvedeném příkladu, druhé volání metody WriteEntry a volání metody WriteException vytvoří protokolový výstup, zatím co první volání a poslední volání metody WriteEntry ne. Důvodem je, že úrovně závažnosti WriteEntry a WriteException jsou "Informace" a "Chyba", obě dvě jsou v základní nastavení filtrování protokolování v objektu My.Application.Log povoleny. Události s úrovní závažnosti "Start" a "Stop" však nebudou moci vyrobit protokolový výstup.

Filtrování pro všechny posluchači My.Application.Log

Objekt My.Application.Log používá SourceSwitch s názvem DefaultSwitch ke kontrole, kterou zprávu předá z metod WriteEntry a WriteException do protokolových posluchačů. Můžete nakonfigurovat DefaultSwitch v konfiguračním soubor aplikace tak, že jej nastavíte na jednu z hodnotu výčtu SourceLevels. Ve výchozím nastavení je jeho hodnota "Information".

V této tabulce jsou uvedeny úrovně závažnosti, které způsobí zapsaní zprávy z protokolu do posluchače, záležící zejména na nastavení DefaultSwitch.

Hodnota DefaultSwitch

Závažnost zprávy požadovaná pro výstup

Critical

Critical

Error

CriticalneboError

Warning

Critical, Error, or Warning

Information

Critical, Error, Warning nebo Information

Verbose

Critical, Error, Warning, Information, or Verbose

ActivityTracing

Start, Stop, Suspend, Resume, or Transfer

All

Jsou všechny zprávy jsou povoleny.

Off

Všechny zprávy jsou blokovány.

Poznámka

Každá z metod WriteEntry a WriteException má přetížení, které neudává úroveň závažnosti. Implicitní úroveň závažnosti pro přetížení WriteEntry je "Information" a implicitní úroveň závažnosti pro přetížení WriteException je "Chyba".

Tato tabulka vysvětluje protokolový výstup z předchozího příkladu: S výchozí nastavení "Informace" pro DefaultSwitch, pouze druhé volání metody WriteEntry a volání metody WriteException vytvoří protokolový výstup.

Jak protokolovat pouze aktivitu trasovacích událostí

  1. V Průzkumníku řešeni klikněte pravým tlačítkem myši na soubor app.config a potom klikněte na tlačítko Otevřít.

    -nebo-

    Pokud neexistuje soubor app.config:

    1. V nabídce Projekt klepněte na příkaz Přidat novou položku.

    2. Z dialogového rámečku Přidat novou položku zvolte Aplikační konfigurační soubor.

    3. Klepněte na tlačítko Přidat.

  2. Nalezněte část <switches>, která je v části <system.diagnostics>, která je v nejvyšší úrovní oddílu <configuration>.

  3. Najděte element, který přidá DefaultSwitch do kolekce přepínačů. Mělo by to vypadat podobně jako tento element:

    <add name="DefaultSwitch" value="Information" />

  4. Změňte hodnotu atributu value na hodnotu "ActivityTracing".

  5. Obsah soubor app.config by měl být podobný následujícímu 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"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="ActivityTracing" />
        </switches>
        <sharedListeners>
          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
                     Microsoft.VisualBasic, Version=8.0.0.0, 
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, 
                     processorArchitecture=MSIL" 
               initializeData="FileLogWriter"/>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
  6. Spusťte aplikace v ladicím módu.

  7. Stiskněte Button1.

    Aplikace zapíše následující informace do aplikačního výstupu ladění a protokolového souboru:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Ukončete aplikaci.

  9. Změňte hodnotu položky valuezpět na "Information".

Poznámka

Nastavení přepínače DefaultSwitch ovládá pouze My.Application.Log. Nemění způsob, jakým se chovají tříd .NET FrameworkSystem.Diagnostics.Trace a System.Diagnostics.Debug

Individualní filtrování pro posluchače My.Application.Log

Předchozí příklad ukazuje, jak změnit filtrování pro všechny My.Application.Log výstupy. V tomto příkladu je ukázáno, jak filtrovat jednotlivé protokolové posluchače. Ve výchozím nastavení má aplikace dva posluchače, kteří zapisují do ladícího výstupu aplikace a protokolového souboru.

Konfigurační soubor řídí chování protokolových posluchačů tím, že umožňuje každému z nich mít filtr, který je obdobou přepínače pro My.Application.Log. Protokolový posluchač vypíše zprávu, pouze pokud její úroveň závažnost je povolena, jak protokolovým DefaultSwitch tak filtrem protokolového posluchače.

Tento příklad uvádí, jak konfigurovat filtrování pro nové ladící posluchače a přidat ho do objektu Log. Výchozí posluchač ladění by měly být odstraněny z objektu Log, tak aby bylo jasné, že ladící zprávy pocházejí z nového posluchače ladění.

Jak protokolovat pouze události, které trasují aktivity

  1. Klikněte pravým tlačítkem myši na soubor app.config v Průzkumníku řešení a potom klikněte na tlačítko Otevřít.

    -nebo-

    Pokud neexistuje soubor app.config:

    1. V nabídce Projekt klikněte na příkaz Přidat novou položku.

    2. Z dialogovém rámečku Přídat novou položku, zvolte Aplikační konfigurační soubor.

    3. Klepněte na tlačítko Přidat.

  2. Klikněte pravým tlačítkem myši na app.config v Průzkumníku řešení. Zvolte Otevřít.

  3. Nalezněte oddíl <listeners>, v sekci <source> s atributem name nastaveným na "DefaultSource", který je umístěný v sekci <sources>. Nalezněte sekci <sources> v sekci <system.diagnostics>, které je v nejvyšší úrovni oddílu <configuration>.

  4. Přidejte tento element do sekce <listeners> .

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
  5. Nalezněte sekci <sharedListeners> v sekci <system.diagnostics>, která je v nejvyšší úroveni oddílu <configuration>.

  6. Přidejte tento element do sekce <sharedListeners>

    <add name="NewDefault" 
         type="System.Diagnostics.DefaultTraceListener, 
               System, Version=2.0.0.0, Culture=neutral, 
               PublicKeyToken=b77a5c561934e089, 
               processorArchitecture=MSIL">
        <filter type="System.Diagnostics.EventTypeFilter" 
                initializeData="Error" />
    </add>

    Filtr EventTypeFilter vezme jedenu z výčtových hodnot SourceLevels jako jejíinitializeData atribut.

  7. Obsah soubor app.config by měl být podobný následujícímu 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"/>
              <!-- Remove the default debug listener. -->
              <remove name="Default"/>
              <!-- Add a filterable debug listener. -->
              <add name="NewDefault"/>
            </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, 
                     processorArchitecture=MSIL" 
               initializeData="FileLogWriter"/>
          <add name="NewDefault" 
               type="System.Diagnostics.DefaultTraceListener, 
                     System, Version=2.0.0.0, Culture=neutral, 
                     PublicKeyToken=b77a5c561934e089, 
                     processorArchitecture=MSIL">
            <filter type="System.Diagnostics.EventTypeFilter" 
                    initializeData="Error" />
          </add>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
  8. Spusťte aplikace v ladicím módu.

  9. Stiskněte Button1.

    Aplikace zapisuje následující informace do protokolového souboru aplikace:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Aplikace zapíše méně informací do aplikačního ladícího výstupu z důvodu více restriktivního filtrování.

    Default Error 2 Error

  10. Ukončete aplikaci.

Další informace o změně nastavení protokolování po nasazení naleznete v tématu Práce s protokoly aplikace v jazyce Visual Basic.

Viz také

Úkoly

Podrobné pokyny: Určení, kde My.Application.Log zapisuje informace (Visual Basic)

Podrobné pokyny: Změna, kde My.Application.Log zapisuje informace (Visual Basic)

Podrobné pokyny: Vytvoření vlastního protokolu posluchače (Visual Basic)

Postupy: Zprávy protokolu zápisu (Visual Basic)

Koncepty

Trasování přepínače

Protokolování informací z aplikace (Visual Basic)