Trace 类

定义

提供一组方法和属性,帮助您跟踪代码的执行。 此类不能被继承。

public ref class Trace sealed
public sealed class Trace
type Trace = class
Public NotInheritable Class Trace
继承
Trace

示例

下面的示例使用 Trace 指示程序执行的开始和结束。 该示例还使用 Trace.IndentTrace.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的断言的方法。 此类提供以下变体中的写入方法:

BooleanSwitchTraceSwitch 类提供了动态控制跟踪输出的方法。 在 .NET Framework 应用中,可以修改这些开关的值,而无需重新编译应用程序。 有关使用配置文件在.NET Framework应用中设置开关的信息,请参阅 Switch 类和如何:Create、初始化和配置跟踪开关

可以通过在集合中添加 TraceListener 实例或从 Listeners 集合中删除实例来自定义跟踪输出的目标。 集合 ListenersDebugTrace 类共享;向任一类添加跟踪侦听器会将侦听器添加到两者。 默认情况下,使用 DefaultTraceListener 类发出跟踪输出。

注意

如果跟踪侦听器使用的资源不可用,将跟踪侦听器添加到 Listeners 集合可能会导致在跟踪时引发异常。 引发的条件和异常取决于跟踪侦听器,不能在本主题中枚举。 将方法的调用 Trace 置于块中 try/catch 以检测和处理来自跟踪侦听器的任何异常可能很有用。

注意

如果将跟踪侦听器添加到部分受信任的代码,则您将收到 SecurityException 异常,因为添加跟踪侦听器需要 UnmanagedCode 权限。 若要跟踪正在 Visual Studio 的沙盒中运行的部分受信任的代码,请不要添加跟踪侦听器。 而是在Trace“输出”窗口中查看 和 Debug 消息。

Trace提供属性来获取或设置 和 IndentSizeIndent级别,以及每次写入后是否为 AutoFlush

在 .NET Framework 应用中,可以通过编辑与应用程序名称对应的配置文件来设置 AutoFlushIndentSizeTrace 。 配置文件的格式应如以下示例所示:

<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

获取或设置每次写入后是否应在 Listeners 上调用 Flush()

CorrelationManager

获取此跟踪的线程的相关管理器。

IndentLevel

获取或设置缩进级别。

IndentSize

获取或设置缩进的空格数。

Listeners

获取正在监视跟踪输出的侦听器集合。

UseGlobalLock

获取或设置一个值,该值指示是否应使用全局锁。

方法

Assert(Boolean)

检查条件 ;如果条件为 false,则显示一个消息框,其中显示调用堆栈。

Assert(Boolean, String)

检查条件;如果条件为 false,则输出指定消息并显示指示调用堆栈的消息框。

Assert(Boolean, String, String)

检查条件 ;如果条件为 false,则输出两条指定消息,并显示一个消息框,其中显示调用堆栈。

Close()

刷新输出缓冲区,然后关闭 Listeners

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Fail(String)

发出指定的错误消息。

Fail(String, String)

发出一条错误消息和一条详细的错误消息。

Flush()

刷新输出缓冲区,并使放入缓冲区中的数据写入 Listeners

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Indent()

将当前的 IndentLevel 增加 1。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Refresh()

刷新跟踪配置数据。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
TraceError(String)

使用指定消息,将错误消息写入 Listeners 集合中的跟踪侦听器。

TraceError(String, Object[])

使用指定的对象数组和格式化信息,将错误消息写入 Listeners 集合中的跟踪侦听器中。

TraceInformation(String)

使用指定消息,将信息性消息写入 Listeners 集合中的跟踪侦听器中。

TraceInformation(String, Object[])

使用指定的对象数组和格式化信息,将信息性消息写入 Listeners 集合中的跟踪侦听器中。

TraceWarning(String)

使用指定的消息将警告消息写入 Listeners 集合中的跟踪侦听器。

TraceWarning(String, Object[])

使用指定的对象数组和格式化信息,将警告消息写入 Listeners 集合中的跟踪侦听器中。

Unindent()

将当前的 IndentLevel 减少 1。

Write(Object)

将对象 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

Write(Object, String)

将类别名称和对象的 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

Write(String)

将消息写入 Listeners 集合中的跟踪侦听器。

Write(String, String)

将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。

WriteIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。

WriteIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。

WriteIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteLine(Object)

将对象 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

WriteLine(Object, String)

将类别名称和对象的 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

WriteLine(String)

将消息写入 Listeners 集合中的跟踪侦听器。

WriteLine(String, String)

将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteLineIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。

WriteLineIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。

WriteLineIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。

WriteLineIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

事件

Refreshing

需要从配置中刷新 时 TraceSource 发生。

适用于

线程安全性

此类型是线程安全的。

另请参阅