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應用程式中,您可以編輯對應至應用程式名稱的組態檔,來設定 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

適用於

執行緒安全性

此型別具備執行緒安全。

另請參閱