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
(和等效的TraceWarning
, TraceError
)记录已提供信息(或警告或错误)跟踪的“事件”(通常检查已请求该级别的跟踪,并使用“标题”,换行符和“页脚”)。
Trace.Write
只是将提供给监听器的文本写入。
NB TraceListener.TraceEvent
是可覆盖的,因此任何特定的侦听器都可以调整输出。