答案 0 :(得分:2)
不幸的是,API在这里混乱,特定的重载会改变行为。方法级文档没有很好地描述方法,查看(反编译)源代码有助于回答这个问题。
Trace.Write/WriteLine(string)
是抽象方法,实现覆盖实际“写入”基本流,并且无论任何跟踪/源配置如何,都将接受任何推入的数据。
Trace.Write/WriteLine(object)
(和其他重载)应该被视为原始的“Trace.WriteVerbose”,因为它们应用了详细的ShouldTrace过滤器。
因此
要直接写入基础流/提供商,绕过过滤器,请使用Trace.Write/WriteLine(string)
。
将始终写入此跟踪文本。
要编写信息性消息,请使用Trace.TraceInformation
。这会通过应用信息过滤器的Trace.WriteLine(string)
调用TraceEvent
。 Trace.TraceXYZ
方法也会发出页眉/页脚。
当跟踪信息时,将写入此跟踪事件。
要编写详细文本,请使用Trace.WriteLine(object)
(或其他重载)。
只有在跟踪详细信息时才会写入此文本。
所有形式的Trace.Write/WriteLine
都会绕过其他跟踪格式并写入底层跟踪实现流。
答案 1 :(得分:0)
我的直觉告诉我他们写了不同类型的流。
TraceInformation为每个跟踪侦听器调用TraceEvent方法,并使用跟踪事件类型Information,将信息性消息作为消息字符串传递。
http://msdn.microsoft.com/en-us/library/64tdffaz(v=vs.110).aspx
此方法调用跟踪侦听器的Write方法。
http://msdn.microsoft.com/en-us/library/sdx112wk(v=vs.110).aspx
答案 2 :(得分:0)
查看Reflector,TraceInformation
(和等效的TraceWarning
,TraceError
)会记录"事件"已经提供了信息(或警告或错误)跟踪(通常检查已经请求了该级别的跟踪以及"标题",换行符和"页脚")。
Trace.Write
只是将提供的文本写入听众。
NB TraceListener.TraceEvent
是可覆盖的,因此任何特定的侦听器都可以调整输出。