TraceSwitch和SourceSwitch - 有什么区别?

时间:2010-09-11 16:28:44

标签: .net tracing traceswitch

所以我可能在这里忽略了显而易见的事实,但TraceSwitchSourceSwitch类的功能之间究竟有什么区别呢?

他们都给出相同的摘要说明:

  

提供多级开关来控制跟踪和调试输出,而无需重新编译代码。

备注部分是否与我的眼睛奇怪相似。有人可以澄清其功能和使用案例的差异吗?

(为了完整性,我使用的是带有TraceSource对象的开关,而不是旧的静态Trace类,但我怀疑它有多大区别。)

3 个答案:

答案 0 :(得分:10)

区别在于TraceSwitch适用于Trace条消息,而SourceSwitch适用于TraceSource条消息,这些消息会将消息与其来源相关联。因此,使用SourceSwitch,您可以根据跟踪消息的来源配置监听器。

我同意文档并没有直接指出差异,而是在相关的TraceSource类文档中进行挖掘,你会发现:

  

TraceSource类由标识   源的名称,通常是   应用程序的名称。踪迹   来自特定的消息   组件可以由a启动   特殊的痕量源,允许所有   来自该组件的消息   容易识别。

还有一个示例向您展示如何配置SourceSwitch以关闭跟踪源的跟踪。

答案 1 :(得分:6)

(较旧的)TraceSwitch基本上是一个TraceLevel对象,与静态Trace类结合使用。

(较新的)TraceSource将TraceLevel概念与实际输出方法相结合。

因此,在大型应用程序中,您可以使用多个TraceSwitch为程序的不同部分(GUI,DAL)配置跟踪设置,但所有输出都将发送到相同的TraceListener。

使用TraceSource,您可以拥有独立的输出通道。还有一个稍好的API。

答案 2 :(得分:0)

对TraceLevel和SourceLevel之间差异的这种解释可能有所帮助:

System.Diagnostics hidden SourceLevels