所以我可能在这里遗漏了明显的东西,但TraceSwitch
和SourceSwitch
类的功能实际上有什么区别?
它们都给出了相同的摘要描述:
提供多级开关来控制跟踪和调试输出,而无需重新编译代码。
备注部分是否与我的眼睛奇怪地相似。有人可以澄清他们的功能和用例的区别吗?
(为了完整起见,我对我的TraceSource
对象使用了开关,而不是旧的静态Trace
类,尽管我怀疑它会产生很大的不同。)
所以我可能在这里遗漏了明显的东西,但TraceSwitch
和SourceSwitch
类的功能实际上有什么区别?
它们都给出了相同的摘要描述:
提供多级开关来控制跟踪和调试输出,而无需重新编译代码。
备注部分是否与我的眼睛奇怪地相似。有人可以澄清他们的功能和用例的区别吗?
(为了完整起见,我对我的TraceSource
对象使用了开关,而不是旧的静态Trace
类,尽管我怀疑它会产生很大的不同。)
不同之处在于,它TraceSwitch
适用于Trace
消息,而SourceSwitch
适用于TraceSource
消息,后者将消息与其源相关联。因此,SourceSwitch
您可以根据跟踪消息的来源配置您的侦听器。
我同意文档没有直接指出差异,但在相关的TraceSource
类文档中挖掘,你会发现:
该类
TraceSource
由源的名称标识,通常是应用程序的名称。来自特定组件的跟踪消息可以由特定跟踪源启动,从而可以轻松识别来自该组件的所有消息。
还有一个示例向您展示如何配置 aSourceSwitch
以关闭来自跟踪源的跟踪。
(较旧的) TraceSwitch 基本上是一个 TraceLevel 对象,可与静态 Trace 类结合使用。
(较新的) TraceSource 将 TraceLevel 概念与实际输出方法相结合。
因此,在大型应用程序中,您可以使用多个 TraceSwitches 为程序的不同部分(GUI、DAL)配置 Trace 设置,但所有输出都将发送到相同的 TraceListener(s)。
使用 TraceSource,您可以拥有独立的输出通道。还有一个稍微好一点的 API。
对 TraceLevel 和 SourceLevel 之间差异的解释可能会有所帮助: