5

Tracing in .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>
4

1 回答 1

6

有一点重叠。A<filter>命名您编写的从 TraceFilter 派生的特定类。您可以使用它来抑制跟踪输出,一切皆有可能。它始终适用于特定的 TraceListener。

<switches>元素对于配置跟踪和设置 TraceSwitch 对象的值很有用。然后您在代码中对其进行测试以选择性地绕过跟踪输出。请注意<switches>“全局”如何,它不适用于特定的侦听器。因此,在 TraceSource 中测试交换机的逻辑位置。开关的一个很好的用途是配置跟踪详细程度。就像您的“错误”值表明只跟踪错误一样。

于 2013-04-01T11:47:58.113 回答