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

时间:2014-10-13 23:50:04

标签: c# asp.net tracing

Trace.Write

之间有什么区别
  

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

Trace.TraceInformation

  

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

3 个答案:

答案 0 :(得分:2)

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

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

Trace.Write/WriteLine(object)(和其他重载)应该被视为原始的“Trace.WriteVerbose”,因为它们应用了详细的ShouldTrace过滤器。

因此

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

    将始终写入此跟踪文本。

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

    当跟踪信息时,将写入此跟踪事件。

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

Trace.Write只是将提供的文本写入听众。

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