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 集合可能會導致擲回例外狀況。 所擲回的條件和例外狀況取決於追蹤接聽程式,無法在此主題中列舉。 在區塊中try/catch對方法的呼叫Trace,以偵測及處理追蹤接聽程式的任何例外狀況可能很有用。

注意

如果您將追蹤接聽程式新增至部分信任的程序代碼,將會收到 SecurityException 例外狀況,因為新增追蹤接聽程式需要 UnmanagedCode 許可權。 若要追蹤在 Visual Studio 沙箱中執行的部分信任程式代碼,請勿新增追蹤接聽程式。 請改為在 [輸出] 視窗中檢視 TraceDebug 訊息。

類別 Trace 提供屬性來取得或設定的 Indent 層級, IndentSize以及是否要在 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++ 編譯程式不支援。 若要提供對等的功能,您必須在 區塊中#if defined(TRACE) ... #endif括住 方法Trace的呼叫,並將 選項新增/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 加一。

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 減少一。

Write(Object)

將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

Write(Object, String)

將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

Write(String)

將訊息寫入 Listeners 集合中的追蹤接聽項。

Write(String, String)

將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, Object)

如果條件為 true,則將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, Object, String)

如果條件為 true,則將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

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,則將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, Object, String)

如果條件為 true,則將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, String)

如果條件為 true,則將訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, String, String)

如果條件是 true,則將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

事件

Refreshing

發生於需要從組態重新整理 時 TraceSource

適用於

執行緒安全性

此型別具備執行緒安全。

另請參閱