Trace 類別

定義

提供一組可協助您追蹤程式碼執行的方法與屬性。 此類別無法獲得繼承。

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

範例

以下範例用 Trace 來表示程式執行的開始與結束。 範例也使用 和 Trace.IndentTrace.Unindent 方法來區分追蹤輸出。 欲了解更完整的使用Trace範例,請參見「如何:在應用程式程式碼中新增追蹤陳述」。

// 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 類別的屬性和方法來製作 release build。 Instrumentation 讓你能監控實際環境中應用程式的健康狀況。 追蹤幫助你找出問題並修正,同時不會干擾運行中的系統。

此類別提供方法來顯示 Assert 對話框,並發出一個 Fail總是 的斷言。 這個類別提供下列變化中的寫入方法:

BooleanSwitchTraceSwitch 類別提供動態控制追蹤輸出的方法。 在 .NET Framework 應用程式中,你可以修改這些交換器的值,而不必重新編譯應用程式。 關於如何在 .NET Framework 應用程式中使用設定檔設定交換器的資訊,請參閱 Switch 類別及 如何:建立、初始化及配置追蹤交換器

您可以將 TraceListener 實體新增至或移除 Listeners 集合中的實例,以自定義追蹤輸出的目標。 ListenersDebug 類別會分享 Trace 集合:將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 預設情況下,追蹤輸出是使用 類別 DefaultTraceListener 來產生的。

Note

若追蹤監聽 Listeners 器使用的資源無法使用,則在追蹤時可能會拋出異常。 條件與拋出的例外取決於追蹤監聽器,且無法在本主題中列舉。 在 Tracetry/ 區塊中,對 catch 方法的呼叫來偵測及處理追蹤接聽程式的任何例外狀況可能很有用。

Note

如果你在部分受信任的程式碼中新增追蹤監聽器,會遇到 SecurityException 例外,因為新增追蹤監聽器需要 UnmanagedCode 權限。 要追蹤在 Visual Studio 沙盒中執行的部分受信任程式碼,請不要新增追蹤監聽器。 請在Trace視窗中查看 Debug AND 訊息。

Trace類別提供屬性,用於取得或設定 的Indent層級,IndentSize以及每次寫入後是否 。AutoFlush

在 .NET Framework 應用程式中,你可以透過編輯與應用程式名稱對應的設定檔,設定 AutoFlushIndentSizeTrace。 設定檔格式應如以下範例:

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

ConditionalAttribute 屬性會套用至 Trace的方法。 除非 ConditionalAttribute 定義為條件式編譯符號,否則支援 TRACE 會忽略對這些方法的呼叫。 請參閱編譯程序的檔,以判斷是否支援 ConditionalAttribute,以及定義條件式編譯符號的語法。

Note

在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該選項,或將 add #define TRACE 加入檔案中。

屬性

名稱 Description
AutoFlush

每次寫入後,是否應該在 上被呼叫 Flush()Listeners 集合。

CorrelationManager

取得該線程的關聯管理器。

IndentLevel

取得或設定縮排等級。

IndentSize

取得或設定縮排中的空格數。

Listeners

取得監控追蹤輸出的監聽者集合。

UseGlobalLock

取得或設定一個值,指示是否應使用全域鎖。

方法

名稱 Description
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 集合中的追蹤接聽程式。

事件

名稱 Description
Refreshing

TraceSource 需要從設定中重新整理時會發生。

適用於

執行緒安全性

此類型是安全線程。

另請參閱