2013-04-01 8 views
5

Jaka jest różnica między "przełącznikiem" a "filtrem" w śledzeniu w .NET? Wydają się działać w podobny sposób.Jaka jest różnica między "przełącznikiem" a "filtrem" w śledzeniu w .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> 

Odpowiedz

6

Występuje pewne nakładanie się. Nazwa <filter> określa konkretną klasę, którą zapisujesz, wywodzącą się z TraceFilter. Które można użyć do tłumienia wyjścia śledzenia, wszystko jest możliwe. Zawsze ma zastosowanie do określonego TraceListener.

Element <switches> służy do konfigurowania śledzenia i ustawiania wartości obiektu TraceSwitch. Które następnie przetestować w swoim kodzie, aby selektywnie pominąć wyjście śledzenia. Zwróć uwagę, że <switches> jest "globalny", nie dotyczy konkretnego słuchacza. Logiczne miejsce do przetestowania przełącznika znajduje się w TraceSource. Dobrym zastosowaniem przełącznika jest skonfigurowanie szczegółowości śledzenia. Podobnie jak wartość "Błąd" wskazuje, że tylko błędy są zawsze śledzone.

+1

Innymi słowy, element '' ogranicza komunikaty wejściowe wysyłane do detektorów, a element '' ogranicza komunikaty, które wysyła listener. – Suncat2000

Powiązane problemy