2013-04-01 11 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

オーバーラップが少しあります。 <filter>は、TraceFilterから派生した特定のクラスに名前を付けます。トレース出力を抑制するために使用できるものは何でも可能です。常に特定のTraceListenerに適用されます。

<switches>要素は、トレースを構成し、TraceSwitchオブジェクトの値を設定するのに便利です。トレース出力を選択的にバイパスするためにコード内でテストします。 <switches>が「グローバル」であることに注意してください。特定のリスナーには適用されません。したがって、スイッチをテストする論理的な場所はTraceSourceにあります。スイッチの適切な使用は、トレースの冗長性を構成することです。あなたの "Error"の値のように、エラーだけが追跡されることを示します。

+1

つまり、 ''要素はリスナーに送信される入力メッセージを制限し、 ''要素はリスナーが出力するメッセージを制限します。 – Suncat2000

関連する問題