2013-04-01 14 views
5

Qual è la differenza tra "interruttore" e "filtro" in Traccia in .NET? Sembrano funzionare in modo simile.Qual è la differenza tra "interruttore" e "filtro" in Traccia in .NET?

<system.diagnostics> 
    <trace autoflush="true" indentsize="5"> 
     <listeners> 
     <add name="DemoListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="D:\output1.txt"> 
     </add> 
     <remove name="Default" /> 
     </listeners> 
    </trace>  
    <sources> 
     <source name="DemoApp" switchName="DemoApp"> 
     <listeners> 
      <add name="DemoListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="D:\output2.txt"> 
      <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> 
      </add> 
      <remove name="Default" /> 
     </listeners> 
     </source> 
    </sources> 
    <switches> 
     <add name="DemoApp" value="Error"/> 
    </switches> 
    </system.diagnostics> 

risposta

6

C'è un po 'di sovrapposizione. Un <filter> identifica una classe specifica che si scrive derivata da TraceFilter. Che è possibile utilizzare per sopprimere l'output di traccia, tutto è possibile. Si applica sempre a un TraceListener specifico.

L'elemento <switches> è utile per configurare la traccia e impostare il valore di un oggetto TraceSwitch. Che poi testate nel vostro codice per bypassare selettivamente l'output di traccia. Nota come <switches> è "globale", non si applica a un listener specifico. Quindi un luogo logico per testare l'interruttore è in TraceSource. Un buon uso per un interruttore è configurare la verbosità della traccia. Come il tuo valore di "Errore" indica che solo gli errori sono mai tracciati.

+1

In altre parole, l'elemento '' limita i messaggi di input inviati agli ascoltatori e l'elemento '' limita i messaggi che il listener emette. – Suncat2000

Problemi correlati