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和操作方法:创建、初始化和配置跟踪交换机

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

备注

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

备注

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

Trace 类提供属性来获取或设置级别 Indent 以及 IndentSize是否 AutoFlush 在每个写入之后。

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

<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 集合中的跟踪侦听器。

适用于

线程安全性

此类型是线程安全的。

另请参阅