Trace 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一组方法和属性,帮助您跟踪代码的执行。 此类不能被继承。
public ref class Trace sealedpublic sealed class Tracetype Trace = classPublic NotInheritable Class Trace- 继承
- 
				Trace
示例
下面的示例使用 Trace 指示程序执行的开始和结束。 该示例还使用 Trace.Indent 和 Trace.Unindent 方法来区分跟踪输出。 有关 使用 的 Trace更完整示例,请参阅 如何:向应用程序代码添加跟踪语句。
// Specify /DTRACE when compiling.
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
int main()
{
   #if defined(TRACE)
   Trace::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
   Trace::AutoFlush = true;
   Trace::Indent();
   Trace::WriteLine( "Entering Main" );
   #endif
   Console::WriteLine( "Hello World." );
   #if defined(TRACE)
   Trace::WriteLine( "Exiting Main" );
   Trace::Unindent();
   #endif
   return 0;
}
// Specify /d:TRACE when compiling.
using System;
using System.Diagnostics;
class Test
{
    static void Main()
    {
       Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
       Trace.AutoFlush = true;
       Trace.Indent();
       Trace.WriteLine("Entering Main");
       Console.WriteLine("Hello World.");
       Trace.WriteLine("Exiting Main");
       Trace.Unindent();
    }
}
' Specify /d:TRACE=True when compiling.
Imports System.Diagnostics
Class Test
    
    Shared Sub Main()
    
        Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
        Trace.AutoFlush = True
        Trace.Indent()
        Trace.WriteLine("Entering Main")
        Console.WriteLine("Hello World.")
        Trace.WriteLine("Exiting Main")
        Trace.Unindent()
        
    End Sub
End Class
注解
可以使用 类中的 Trace 属性和方法来检测发布生成。 通过检测,可以监视在实际设置中运行的应用程序的运行状况。 跟踪有助于隔离问题并解决问题,而不会干扰正在运行的系统。
此类提供用于显示 Assert 对话框和发出始终 Fail的断言的方法。 此类提供以下变体中的写入方法:
BooleanSwitch和 TraceSwitch 类提供了动态控制跟踪输出的方法。 在 .NET Framework 应用中,可以修改这些开关的值,而无需重新编译应用程序。 有关使用配置文件在.NET Framework应用中设置开关的信息,请参阅 Switch 类和如何:Create、初始化和配置跟踪开关。
可以通过在集合中添加 TraceListener 实例或从 Listeners 集合中删除实例来自定义跟踪输出的目标。 集合 Listeners 由 Debug 和 Trace 类共享;向任一类添加跟踪侦听器会将侦听器添加到两者。 默认情况下,使用 DefaultTraceListener 类发出跟踪输出。
注意
如果跟踪侦听器使用的资源不可用,将跟踪侦听器添加到 Listeners 集合可能会导致在跟踪时引发异常。 引发的条件和异常取决于跟踪侦听器,不能在本主题中枚举。 将方法的调用 Trace 置于块中 try/catch 以检测和处理来自跟踪侦听器的任何异常可能很有用。
注意
如果将跟踪侦听器添加到部分受信任的代码,则您将收到 SecurityException 异常,因为添加跟踪侦听器需要 UnmanagedCode 权限。 若要跟踪正在 Visual Studio 的沙盒中运行的部分受信任的代码,请不要添加跟踪侦听器。 而是在Trace“输出”窗口中查看 和 Debug 消息。
类Trace提供属性来获取或设置 和 IndentSize的Indent级别,以及每次写入后是否为 AutoFlush 。
在 .NET Framework 应用中,可以通过编辑与应用程序名称对应的配置文件来设置 AutoFlush 和 IndentSizeTrace 。 配置文件的格式应如以下示例所示:
<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="3" />  
  </system.diagnostics>  
</configuration>  
特性 ConditionalAttribute 应用于 的方法 Trace。 除非定义为条件编译符号,否则TRACE支持ConditionalAttribute的编译器会忽略对这些方法的调用。 请参阅编译器的文档以确定是否 ConditionalAttribute 受支持,以及用于定义条件编译符号的语法。
注意
在 Visual Studio 项目中,默认情况下, DEBUG 条件编译符号是为调试版本定义的,而 TRACE 符号是为调试和发布生成定义的。
若要使用 C# 定义 TRACE 条件编译符号,请在使用命令行编译代码时将 选项添加到 /d:TRACE 编译器命令行,或将 添加到 #define TRACE 文件顶部。 在 Visual Basic 中,将 选项添加到 /d:TRACE=True 编译器命令行或添加到 #Const TRACE=True 文件中。
              ConditionalAttribute C++ 编译器不支持 。 若要提供等效的功能,必须将对 方法的 Trace 调用包含在 块中 #if defined(TRACE) ... #endif ,并将 选项添加到 /DTRACE 编译器命令行或添加到 #define TRACE 文件中。
属性
| AutoFlush | |
| CorrelationManager | 获取此跟踪的线程的相关管理器。 | 
| IndentLevel | 获取或设置缩进级别。 | 
| IndentSize | 获取或设置缩进的空格数。 | 
| Listeners | 获取正在监视跟踪输出的侦听器集合。 | 
| UseGlobalLock | 获取或设置一个值,该值指示是否应使用全局锁。 | 
方法
事件
| Refreshing | 需要从配置中刷新 时 TraceSource 发生。 | 
适用于
线程安全性
此类型是线程安全的。