Trace 类

定义

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

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

示例

以下示例用于 Trace 指示程序的执行开始和结束。 此示例还使用 Trace.IndentTrace.Unindent 方法来区分跟踪输出。 有关使用 Trace方法的更完整示例,请参阅 How to: Add Trace Statements to Application Code

// 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 来自定义跟踪输出的目标。 集合Listeners由这两个DebugTrace类共享;向任一类添加跟踪侦听器会将侦听器添加到这两者。 默认情况下,使用 DefaultTraceListener 类发出跟踪输出。

注释

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

注释

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

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

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

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="3" />
  </system.diagnostics>
</configuration>

ConditionalAttribute 属性应用于 . 的方法 Trace。 除非定义为条件编译符号,否则ConditionalAttribute支持TRACE忽略对这些方法的调用的编译器。 请参阅编译器的文档,以确定是否 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

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

CorrelationManager

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

IndentLevel

获取或设置缩进级别。

IndentSize

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

Listeners

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

UseGlobalLock

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

方法

名称 说明
Assert(Boolean, String, String)

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

Assert(Boolean, String)

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

Assert(Boolean)

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

Close()

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

Equals(Object)

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

(继承自 Object)
Fail(String, String)

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

Fail(String)

发出指定的错误消息。

Flush()

刷新输出缓冲区,并导致缓冲的数据写入到该 Listeners缓冲区。

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Indent()

将当前 IndentLevel 值增加一个。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
Refresh()

刷新跟踪配置数据。

ToString()

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

(继承自 Object)
TraceError(String, Object[])

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

TraceError(String)

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

TraceInformation(String, Object[])

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

TraceInformation(String)

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

TraceWarning(String, Object[])

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

TraceWarning(String)

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

Unindent()

将当前 IndentLevel 数减少一个。

Write(Object, String)

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

Write(Object)

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

Write(String, String)

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

Write(String)

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

WriteIf(Boolean, Object, String)

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

WriteIf(Boolean, Object)

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

WriteIf(Boolean, String, String)

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

WriteIf(Boolean, String)

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

WriteLine(Object, String)

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

WriteLine(Object)

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

WriteLine(String, String)

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

WriteLine(String)

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

WriteLineIf(Boolean, Object, String)

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

WriteLineIf(Boolean, Object)

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

WriteLineIf(Boolean, String, String)

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

WriteLineIf(Boolean, String)

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

活动

名称 说明
Refreshing

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

适用于

线程安全性

此类型是线程安全的。

另请参阅