9

所以我可能在这里遗漏了明显的东西,但TraceSwitchSourceSwitch类的功能实际上有什么区别?

它们都给出了相同的摘要描述:

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

备注部分是否与我的眼睛奇怪地相似。有人可以澄清他们的功能和用例的区别吗?

(为了完整起见,我对我的TraceSource对象使用了开关,而不是旧的静态Trace类,尽管我怀疑它会产生很大的不同。)

4

3 回答 3

10

不同之处在于,它TraceSwitch适用于Trace消息,而SourceSwitch适用于TraceSource消息,后者将消息与其源相关联。因此,SourceSwitch您可以根据跟踪消息的来源配置您的侦听器。

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

该类TraceSource由源的名称标识,通常是应用程序的名称。来自特定组件的跟踪消息可以由特定跟踪源启动,从而可以轻松识别来自该组件的所有消息。

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

于 2010-09-11T17:01:36.160 回答
7

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

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

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

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

于 2010-09-11T17:06:15.283 回答
0

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

System.Diagnostics 隐藏的 SourceLevels

于 2010-10-25T18:51:02.503 回答