Trace.Write()和Trace.TraceInformation()之间的区别

Trace.Write有什么区别

将有关跟踪的信息写入跟踪侦听器

和Trace.TraceInformation ?

将信息性消息写入跟踪侦听器

不幸的是,API在这里混乱,特定的重载会改变行为。 方法级文档没有很好地描述方法,查看(反编译)源有助于回答这个问题。

Trace.Write/WriteLine(string)是实现覆盖以实际“写入”基本流的抽象方法 ,无论任何跟踪/源配置如何,都将接受任何被推入的数据。

Trace.Write/WriteLine(object) (以及其他重载)应该被有效地视为原始的“Trace.WriteVerbose”,因为它们应用了Verbose ShouldTracefilter。

因此

  • 要直接写入基础流/提供程序,绕过filter,请使用Trace.Write/WriteLine(string)

    始终会写入此跟踪文本。

  • 要编写信息性消息,请使用Trace.TraceInformation 。 这通过应用信息filter的TraceEvent调用Trace.WriteLine(string)Trace.TraceXYZ方法也会发出页眉/页脚。

    应在跟踪信息时写入此跟踪事件。

  • 要编写详细文本,请使用Trace.WriteLine(object) (或其他重载)。

    只有在跟踪详细时才会写入此文本。

所有forms的Trace.Write/WriteLine绕过其他跟踪格式并写入底层跟踪实现流。

我的直觉告诉我他们写不同类型的流。

Trace.TraceInformation

TraceInformation为每个跟踪侦听器调用TraceEvent方法,并使用跟踪事件类型Information,将信息性消息作为消息字符串传递。

http://msdn.microsoft.com/en-us/library/64tdffaz(v=vs.110).aspx

Trace.Write

此方法调用跟踪侦听器的Write方法。

http://msdn.microsoft.com/en-us/library/sdx112wk(v=vs.110).aspx

查看Reflector, TraceInformation (和等效的TraceWarningTraceError )记录已提供信息(或警告或错误)跟踪的“事件”(通常检查已请求该级别的跟踪,并使用“标题”,换行符和“页脚”)。

Trace.Write只是将提供给监听器的文本写入。

NB TraceListener.TraceEvent是可覆盖的,因此任何特定的侦听器都可以调整输出。