ConsoleTraceListener 類別

定義

將追蹤或偵錯輸出直接導向到標準輸出或標準錯誤資料流。

public ref class ConsoleTraceListener : System::Diagnostics::TextWriterTraceListener
public class ConsoleTraceListener : System.Diagnostics.TextWriterTraceListener
type ConsoleTraceListener = class
    inherit TextWriterTraceListener
Public Class ConsoleTraceListener
Inherits TextWriterTraceListener
繼承

範例

下列程式代碼範例會實作控制台應用程式,其中包含具有兩個公用方法的類別。

方法 Main 會檢查命令行自變數,並判斷追蹤輸出是否應該導向至標準錯誤數據流或標準輸出數據流。 Main 會建立並初始化 ConsoleTraceListener 指定 Console 之輸出數據流的物件,並將這個物件加入至追蹤接聽程式集合。 然後它會呼叫 WriteEnvironmentInfoToTrace 方法,以將執行環境的詳細數據和追蹤接聽程式組態寫入追蹤輸出。

當範例應用程式執行時,環境和追蹤組態詳細數據會透過 ConsoleTraceListener 物件寫入指定的主控台輸出資料流。

// Define the TRACE directive, which enables trace output to the
// Trace.Listeners collection. Typically, this directive is defined
// as a compilation argument.
#define TRACE
using System;
using System.Diagnostics;

public class ConsoleTraceSample
{

    // Define a simple method to write details about the current executing
    // environment to the trace listener collection.
    public static void WriteEnvironmentInfoToTrace()
    {

        string methodName = "WriteEnvironmentInfoToTrace";

        Trace.Indent();
        Trace.WriteLine(DateTime.Now.ToString() + " - Start of " + methodName);
        Trace.Indent();

        // Write details on the executing environment to the trace output.
        Trace.WriteLine("Operating system: " + System.Environment.OSVersion.ToString());
        Trace.WriteLine("Computer name: " + System.Environment.MachineName);
        Trace.WriteLine("User name: " + System.Environment.UserName);
        Trace.WriteLine("CLR runtime version: " + System.Environment.Version.ToString());
        Trace.WriteLine("Command line: " + System.Environment.CommandLine);

        // Enumerate the trace listener collection and
        // display details about each configured trace listener.
        Trace.WriteLine("Number of configured trace listeners = " + Trace.Listeners.Count.ToString());

        foreach (TraceListener tl in Trace.Listeners)
        {
            Trace.WriteLine("Trace listener name = " + tl.Name);
            Trace.WriteLine("               type = " + tl.GetType().ToString());
        }

        Trace.Unindent();
        Trace.WriteLine(DateTime.Now.ToString() + " - End of " + methodName);
        Trace.Unindent();
    }

    // Define the main entry point of this class.
    // The main method adds a console trace listener to the collection
    // of configured trace listeners, then writes details on the current
    // executing environment.
    public static void Main(string[] CmdArgs)
    {

        // Write a trace message to all configured trace listeners.
        Trace.WriteLine(DateTime.Now.ToString()+" - Start of Main");

        // Define a trace listener to direct trace output from this method
        // to the console.
        ConsoleTraceListener consoleTracer;

        // Check the command line arguments to determine which
        // console stream should be used for trace output.
        if ((CmdArgs.Length>0)&&(CmdArgs[0].ToString().ToLower().Equals("/stderr")))
            // Initialize the console trace listener to write
            // trace output to the standard error stream.
        {
            consoleTracer = new ConsoleTraceListener(true);
        }
        else
        {
            // Initialize the console trace listener to write
            // trace output to the standard output stream.
            consoleTracer = new ConsoleTraceListener();
        }
        // Set the name of the trace listener, which helps identify this
        // particular instance within the trace listener collection.
        consoleTracer.Name = "mainConsoleTracer";

        // Write the initial trace message to the console trace listener.
        consoleTracer.WriteLine(DateTime.Now.ToString()+" ["+consoleTracer.Name+"] - Starting output to trace listener.");

        // Add the new console trace listener to
        // the collection of trace listeners.
        Trace.Listeners.Add(consoleTracer);

        // Call a local method, which writes information about the current
        // execution environment to the configured trace listeners.
        WriteEnvironmentInfoToTrace();

        // Write the final trace message to the console trace listener.
        consoleTracer.WriteLine(DateTime.Now.ToString()+" ["+consoleTracer.Name+"] - Ending output to trace listener.");

        // Flush any pending trace messages, remove the
        // console trace listener from the collection,
        // and close the console trace listener.
        Trace.Flush();
        Trace.Listeners.Remove(consoleTracer);
        consoleTracer.Close();

        // Write a final trace message to all trace listeners.
        Trace.WriteLine(DateTime.Now.ToString()+" - End of Main");

        // Close all other configured trace listeners.
        Trace.Close();
    }
}
' Define the TRACE constant, which enables trace output to the 
' Trace.Listeners collection. Typically, this constant is defined
' as a compilation argument.
#Const TRACE = True

Imports System.Diagnostics

Public Class ConsoleTraceSample

    ' Define a simple method to write details about the current executing 
    ' environment to the trace listener collection.
    Public Shared Sub WriteEnvironmentInfoToTrace()

        Dim methodName As String = "WriteEnvironmentInfoToTrace"

        Trace.Indent()
        Trace.WriteLine(DateTime.Now.ToString() & " - Start of " & methodName)
        Trace.Indent()

        ' Write details on the executing environment to the trace output.
        Trace.WriteLine("Operating system: " & _
            System.Environment.OSVersion.ToString())
        Trace.WriteLine("Computer name: " & System.Environment.MachineName)
        Trace.WriteLine("User name: " & System.Environment.UserName)
        Trace.WriteLine("CLR version: " & System.Environment.Version.ToString)
        Trace.WriteLine("Command line: " & System.Environment.CommandLine)

        ' Enumerate the trace listener collection and 
        ' display details about each configured trace listener.
        Trace.WriteLine("Number of configured trace listeners = " & _
            Trace.Listeners.Count.ToString())

        Dim tl As TraceListener
        For Each tl In Trace.Listeners
            Trace.WriteLine("Trace listener name = " & tl.Name)
            Trace.WriteLine("               type = " & tl.GetType().ToString())
        Next tl

        Trace.Unindent()
        Trace.WriteLine(DateTime.Now.ToString() & " - End of " & methodName)
        Trace.Unindent()

    End Sub

    ' Define the main entry point of this class.
    ' The main method adds a console trace listener to the collection
    ' of configured trace listeners, then writes details on the current
    ' executing environment.
    Public Shared Sub Main(ByVal CmdArgs() As String)

        ' Write a trace message to all configured trace listeners.
        Trace.WriteLine(DateTime.Now.ToString() & " - Start of Main")

        ' Define a trace listener to direct trace output from this method
        ' to the console.
        Dim consoleTracer As ConsoleTraceListener

        ' Check the command line arguments to determine which
        ' console stream should be used for trace output.
        If (CmdArgs.Length > 0) AndAlso _
           (CmdArgs(0).ToLower.Equals("/stderr")) Then
            ' Initialize the console trace listener to write
            ' trace output to the standard error stream.
            consoleTracer = New ConsoleTraceListener(True)
        Else
            ' Initialize the console trace listener to write
            ' trace output to the standard output stream.
            consoleTracer = New ConsoleTraceListener
        End If
        ' Set the name of the trace listener, which helps identify this 
        ' particular instance within the trace listener collection.
        consoleTracer.Name = "mainConsoleTracer"

        ' Write the initial trace message to the console trace listener.
        consoleTracer.WriteLine(DateTime.Now.ToString() & " [" & _
             consoleTracer.Name & "] - Starting output to trace listener.")

        ' Add the new console trace listener to 
        ' the collection of trace listeners.
        Trace.Listeners.Add(consoleTracer)

        ' Call a local method, which writes information about the current 
        ' execution environment to the configured trace listeners.
        WriteEnvironmentInfoToTrace()

        ' Write the final trace message to the console trace listener.
        consoleTracer.WriteLine(DateTime.Now.ToString() & " [" & _
            consoleTracer.Name & "] - Ending output to trace listener.")

        ' Flush any pending trace messages, remove the 
        ' console trace listener from the collection,
        ' and close the console trace listener.
        Trace.Flush()
        Trace.Listeners.Remove(consoleTracer)
        consoleTracer.Close()

        ' Write a final trace message to all trace listeners.
        Trace.WriteLine(DateTime.Now.ToString() + " - End of Main")

        ' Close all other configured trace listeners.
        Trace.Close()

    End Sub

End Class

備註

ConsoleTraceListener使用 類別將追蹤和偵錯訊息寫入主控台。 您可以初始化 物件, ConsoleTraceListener 以將追蹤訊息 Console.Out 寫入數據流或 Console.Error 數據流。

重要

此型別代表 IDisposable 介面。 當您完成使用型別時,您應該直接或間接處置它。 若要直接處置類型,請在 區塊中try/catch呼叫其 Dispose 方法。 若要間接處置它,請使用語言建構函式,例如 using (在 C# 中) 或 Using (在 Visual Basic 中)。 如需詳細資訊,請參閱 IDisposable 介面文章中的<使用實作 IDisposable 的物件>一節。

啟用追蹤和偵錯輸出時,ConsoleTraceListener訊息會寫入指定的System.Console數據流,類似於使用 或 Console.WriteLine 方法寫入Console.Write訊息的方式。 在主控台應用程式中,輸出和錯誤串流會將 System.Console 訊息寫入現有的控制台視窗,或者您可以將資料流重新導向至 System.IO.TextWriter 實例。

注意

如果主控台不存在,如同在 Windows 型應用程式中,不會顯示寫入主控台的訊息。

ConsoleTraceListener如果您想要透過、 TraceSourceDebug 寫入主控台的訊息Trace,請將 物件新增至適當的Listeners集合。 此外,您也可以使用 Trace.WriteTrace.WriteLine 方法來直接將訊息寫入主控台。

注意

DebugTrace 類別會共用相同的TraceListenerCollection集合,可透過其各自的Listeners屬性來存取。 如果您使用其中一個類別將 物件新增至集合,另一個 ConsoleTraceListener 類別會自動使用相同的接聽程式。

大部分編譯程式都會透過條件式編譯旗標啟用追蹤和偵錯輸出。 如果您未啟用追蹤或偵錯,則會有效地忽略透過 System.Diagnostics.DebugSystem.Diagnostics.Trace 類別撰寫的訊息。 啟用追蹤和偵錯輸出的語法是編譯程式特定的;如果您使用 C# 或 Visual Basic 以外的編譯程式,請參閱編譯程式的檔。

  • 若要在 C# 中啟用偵錯,請在編譯程式程式代碼時,將 /d:DEBUG旗標新增至編譯程式命令行,或將 #define DEBUG 新增至檔案頂端。 在 Visual Basic 中,將 /d:DEBUG=True 旗標新增至編譯程式命令行。

  • 若要在 C# 中啟用追蹤,請在編譯程式代碼時,將 /d:TRACE 旗標新增至編譯程式命令行,或將 #define TRACE 新增至檔案頂端。 在 Visual Basic 中,將 /d:TRACE=True 旗標新增至編譯程式命令行。

您可以在程式代碼中將 物件新增 ConsoleTraceListenerListeners 集合。 或者,對於 .NET Framework 應用程式,您可以透過應用程式組態檔將 物件新增ConsoleTraceListenerListeners集合。 在程式代碼中新增 ConsoleTraceListener 物件,以撰寫特定程式代碼區段或執行路徑的訊息。 在應用程式組態檔中新增 ConsoleTraceListener 物件,以在應用程式執行時將所有追蹤和偵錯訊息導向控制台。

若要針對特定程式代碼區段將追蹤和偵錯訊息寫入主控台,請初始化 ConsoleTraceListener 物件,並將其新增至 Listeners 集合。 使用或 Debug 類別檢測包含訊息Trace的程式代碼區段。 在程式代碼區段的結尾,從集合中移除 ConsoleTraceListener 物件,並在上ConsoleTraceListener呼叫 Close 方法。Listeners

對於 .NET Framework 應用程式,若要在應用程式執行時將所有追蹤和偵錯訊息導向控制台,請將 物件新增ConsoleTraceListener至應用程式組態檔。 下列範例會將名為 configConsoleListener 的物件新增ConsoleTraceListenerListeners集合。

<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="4">  
      <listeners>  
        <add name="configConsoleListener" type="System.Diagnostics.ConsoleTraceListener" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
 </configuration>  

如需在應用程式組態檔中新增追蹤接聽程式的詳細資訊,請參閱 <接聽程式>

建構函式

ConsoleTraceListener()

初始化 ConsoleTraceListener 類別的新執行個體,附追蹤輸出寫入至標準輸出資料流。

ConsoleTraceListener(Boolean)

初始化 ConsoleTraceListener 類別的新執行個體,附寫入追蹤輸出至標準輸出資料流或標準錯誤資料流的選項。

屬性

Attributes

取得在應用程式組態檔中定義的自訂追蹤接聽程式屬性。

(繼承來源 TraceListener)
Filter

取得或設定追蹤接聽程式的追蹤篩選。

(繼承來源 TraceListener)
IndentLevel

取得或設定縮排層級。

(繼承來源 TraceListener)
IndentSize

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

(繼承來源 TraceListener)
IsThreadSafe

取得值,指出追蹤接聽程式是否為安全執行緒。

(繼承來源 TraceListener)
Name

取得或設定這個 TraceListener 的名稱。

(繼承來源 TraceListener)
NeedIndent

取得或設定值,指出是否要縮排輸出。

(繼承來源 TraceListener)
TraceOutputOptions

取得或設定追蹤輸出選項。

(繼承來源 TraceListener)
Writer

取行或設定接收追蹤或偵錯之輸出的文字寫入器。

(繼承來源 TextWriterTraceListener)

方法

Close()

關閉輸出到為此追蹤接聽項所指定的資料流。

Close()

關閉 Writer 使其不再接收追蹤或偵錯的輸出。

(繼承來源 TextWriterTraceListener)
CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
Dispose()

釋放 TraceListener 所使用的所有資源。

(繼承來源 TraceListener)
Dispose(Boolean)

處置這個 TextWriterTraceListener 物件。

(繼承來源 TextWriterTraceListener)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Fail(String)

當您實作 TraceListener 類別時,發出錯誤訊息給您建立的接聽程式。

(繼承來源 TraceListener)
Fail(String, String)

當您實做 TraceListener 類別時,發出錯誤訊息和詳細的錯誤訊息給您建立的接聽程式。

(繼承來源 TraceListener)
Flush()

清除 Writer 的輸出緩衝區。

(繼承來源 TextWriterTraceListener)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetSupportedAttributes()

取得由追蹤接聽程式支援的自訂屬性。

(繼承來源 TraceListener)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

寫入追蹤資訊、資料物件與事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object[])

寫入追蹤資訊、資料物件的陣列與事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32)

寫入追蹤和事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

寫入追蹤資訊、訊息與事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[])

寫入追蹤資訊、格式化的物件陣列與事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

寫入追蹤資訊、訊息、相關活動身分識別與事件資訊至特定接聽程式的輸出。

(繼承來源 TraceListener)
Write(Object)

將物件的 ToString() 方法的值寫入當您實作 TraceListener 類別時所建立的接聽程式。

(繼承來源 TraceListener)
Write(Object, String)

將類別名稱和物件的 ToString() 方法的值寫入當您實作 TraceListener 類別時所建立的接聽程式。

(繼承來源 TraceListener)
Write(String)

將訊息寫入這個執行個體的 Writer

(繼承來源 TextWriterTraceListener)
Write(String, String)

將分類名稱和訊息寫入當您實作 TraceListener 類別時所建立的接聽程式。

(繼承來源 TraceListener)
WriteIndent()

將縮排寫入當您實作這個類別時所建立的接聽程式,並且將 NeedIndent 屬性重設為 false

(繼承來源 TraceListener)
WriteLine(Object)

將物件的 ToString() 方法的值寫入當您實作 TraceListener 類別時所建立的接聽程式,後面跟隨著行結束字元。

(繼承來源 TraceListener)
WriteLine(Object, String)

將分類名稱和物件的 ToString() 方法的值寫入當您實作 TraceListener 類別時所建立的接聽程式,後面跟隨著行結束字元。

(繼承來源 TraceListener)
WriteLine(String)

將訊息寫入這個執行個體的 Writer,後面接著行結束字元。 預設行結束字元為後面接著換行符號 (\r\n) 的歸位字元。

(繼承來源 TextWriterTraceListener)
WriteLine(String, String)

將分類名稱和訊息寫入當您實作 TraceListener 類別時所建立的接聽程式,後面跟隨著行結束字元。

(繼承來源 TraceListener)

適用於

另請參閱