Trace 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一组方法和属性,帮助您跟踪代码的执行。 此类不能被继承。
public ref class Trace sealed
public sealed class Trace
type Trace = class
Public 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 发生。 |
适用于
线程安全性
此类型是线程安全的。