2013-04-01 95 views
5

在.NET中的跟蹤「開關」和「過濾器」之間的區別是什麼?他們似乎以類似的方式工作。在.NET中進行跟蹤時,「switch」和「filter」有什麼區別?

<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> 

回答

6

有一些重疊。 A <filter>命名您從TraceFilter派生的特定類。你可以使用它來抑制跟蹤輸出,任何事情都是可能的。它總是適用於特定的TraceListener。

<switches>元素用於配置跟蹤並設置TraceSwitch對象的值。然後在代碼中測試以選擇性地繞過跟蹤輸出。請注意0​​如何是「全局」,它不適用於特定的偵聽器。因此,測試開關的邏輯地點在TraceSource中。交換機的一個很好的用途是配置跟蹤詳細程度。就像你的「錯誤」值將表明只有錯誤被追蹤。

+1

換句話說,''元素限制發送給收聽者的輸入消息,''元素限制收聽者輸出的消息。 – Suncat2000

相關問題