.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>
答案 0 :(得分:6)
有一些重叠。 <filter>
命名您编写的特定类,该类派生自TraceFilter。您可以使用它来抑制跟踪输出,一切皆有可能。它始终适用于特定的TraceListener。
<switches>
元素可用于配置跟踪并设置TraceSwitch对象的值。然后,您可以在代码中测试以选择性地绕过跟踪输出。请注意<switches>
是“全局”的,它不适用于特定的侦听器。因此,测试交换机的逻辑位置在TraceSource中。交换机的一个很好用途是配置跟踪详细程度。与“错误”值类似,表示只跟踪错误。