【问题标题】:What is the difference between "switch" and "filter" in Tracing in .NET?.NET Tracing 中的“switch”和“filter”有什么区别?
【发布时间】:2013-03-22 11:27:22
【问题描述】:

.NET Tracing 中的“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>

【问题讨论】:

    标签: .net filter switch-statement trace system.diagnostics


    【解决方案1】:

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

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

    【讨论】:

    • 换句话说,&lt;switch&gt; 元素限制了发送给监听器的输入消息,&lt;filter&gt; 元素限制了监听器输出的消息。
    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2011-03-11
    • 2012-01-14
    • 2011-10-17
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多