XmlWriterTraceListener 類別

定義

將追蹤或偵錯輸出做為 XML 編碼資料導向 TextWriterStream,例如做為 FileStream

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

範例

下列程式代碼範例示範如何使用 XmlWriterTraceListener 類別,將逸出和非逸出的數據寫入檔案記錄。

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Diagnostics;

class testClass
{
    static void Main()
    {
        File.Delete("NotEscaped.xml");
        TraceSource ts = new TraceSource("TestSource");
        ts.Listeners.Add(new XmlWriterTraceListener("NotEscaped.xml"));
        ts.Switch.Level = SourceLevels.All;
        string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>";
        XmlTextReader myXml = new XmlTextReader(new StringReader(testString));
        XPathDocument xDoc = new XPathDocument(myXml);
        XPathNavigator myNav = xDoc.CreateNavigator();
        ts.TraceData(TraceEventType.Error, 38, myNav);

        ts.Flush();
        ts.Close();

        File.Delete("Escaped.xml");
        TraceSource ts2 = new TraceSource("TestSource2");
        ts2.Listeners.Add(new XmlWriterTraceListener("Escaped.xml"));
        ts2.Switch.Level = SourceLevels.All;
        ts2.TraceData(TraceEventType.Error, 38, testString);

        ts2.Flush();
        ts2.Close();
    }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Diagnostics



Class testClass
    
    Shared Sub Main() 
        File.Delete("NotEscaped.xml")
        Dim ts As New TraceSource("TestSource")
        ts.Listeners.Add(New XmlWriterTraceListener("NotEscaped.xml"))
        ts.Switch.Level = SourceLevels.All
        Dim testString As String = "<Test><InnerElement Val=""1"" /><InnerElement Val=""Data""/><AnotherElement>11</AnotherElement></Test>"
        Dim myXml As New XmlTextReader(New StringReader(testString))
        Dim xDoc As New XPathDocument(myXml)
        Dim myNav As XPathNavigator = xDoc.CreateNavigator()
        ts.TraceData(TraceEventType.Error, 38, myNav)

        ts.Flush()
        ts.Close()
        
        File.Delete("Escaped.xml")
        Dim ts2 As New TraceSource("TestSource2")
        ts2.Listeners.Add(New XmlWriterTraceListener("Escaped.xml"))
        ts2.Switch.Level = SourceLevels.All
        ts2.TraceData(TraceEventType.Error, 38, testString)
        
        ts2.Flush()
        ts2.Close()
    
    End Sub
End Class

備註

注意

您必須具有 Unmanaged 程式代碼許可權,才能建立 類別的 XmlWriterTraceListener 實例。

類別 XmlWriterTraceListener 會將追蹤和偵錯資訊轉換成 XML 編碼的文字數據流。 XML 輸出的描述會顯示在下列數據表中。 您可以使用 服務追蹤檢視器工具 (SvcTraceViewer.exe) 來顯示 XML 輸出。

您可以在程式代碼中建立 XmlWriterTraceListener 。 或者,針對 .NET Framework 應用程式,您可以透過應用程式組態檔啟用或停用 XmlWriterTraceListener ,然後使用應用程式中設定XmlWriterTraceListener的 。 若要設定 XmlWriterTraceListener,請編輯對應至應用程式名稱的組態檔。 在此檔案中,您可以新增或移除接聽程式、設定接聽程式的屬性,或移除接聽程式。 組態檔的格式應該像下列範例一樣。

<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="4">  
      <listeners>  
        <add name="xmlListener"   
          type="System.Diagnostics.XmlWriterTraceListener"   
          initializeData="xmlOutput.xml"   
          traceOutputOptions="ProcessId, DateTime" />  
        <remove name="Default" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
</configuration>  

類別 XmlWriterTraceListenerFilter 從基類 TraceListener繼承 屬性。 屬性 Filter 允許接聽程式的其他追蹤輸出篩選層級。 如果有篩選存在, Trace 追蹤接聽程式的方法會呼叫 ShouldTrace 篩選的 方法,以判斷是否要發出追蹤。

注意

如果嘗試寫入使用中或無法使用的檔案,則檔名會自動加上 GUID 的前置詞。

注意

接聽程式方法旨在由、Trace類別 TraceSource 的方法Debug呼叫。 接聽程式方法不適合直接從應用程式程式代碼呼叫。 接 XmlWriterTraceListener 聽程式主要是供類別使用 TraceSourceWrite和方法可以由 TraceWriteLineDebug 類別呼叫,而且會為 XML 元素提供預設值,TraceDebug未提供 值。

下表描述 XML 輸出的項目和屬性。

項目 屬性 輸出 注意
CallStack None 取決於屬性中TraceOutputOptions是否有 Callstack 旗標。 或 之類的><特殊字元會取代為逸出序列。 請參閱下列逸出字元轉譯表格。
Computer None 一律顯示。 MachineName 屬性的值。
Correlation ActivityID 永遠存在 如果未指定,預設值為空的 GUID。
RelatedActivityID 取決於 Trace 方法呼叫中的 參數是否存在 relatedActivityId TraceTransfer 方法的 relatedActivityId 參數。
DataItem None 取決於 data 方法的參數 TraceData 此元素可以包含項目陣列或一個專案,因此值會寫入為 元素底下的TraceData一組DataItem節點。

數據輸出會使用 ToString 傳入資料物件的方法。
EventID None 一律顯示。 參數輸入 (id) 。
Execution ProcessName 一律顯示。 TraceEventCache從 。
ProcessID 一律顯示。 TraceEventCache從 。
ThreadID 一律顯示。 TraceEventCache從 。
Level None 一律顯示。 參數輸入 () 的 eventType 數值。 大於 255 的參數值會輸出為 255。
LogicalOperationStack None 取決於屬性中的TraceOutputOptions旗標是否存在LogicalOperationStack 有一個以上的邏輯作業,因此值會寫入為 LogicalOperation 元素下的 LogicalOperationStack 節點。
Message None 取決於 Trace 方法呼叫中的訊息是否存在。 如果提供格式化自變數,則這個專案是格式化的訊息。
Source Name 一律顯示。 參數輸入。
SubType Name 一律顯示。 參數輸入。
TimeCreated SystemTime 一律顯示。 如果 不存在於 TraceEventCache中,則預設值為目前時間。
TimeStamp None 取決於屬性中的TraceOutputOptions旗標是否存在Timestamp TraceEventCache從 。
Type None 一律顯示。 一律為值 3。

下表顯示 XML 輸出中逸出的字元。 逸出發生在所有項目和屬性中,但專案除外,如果傳遞至 data 方法參數TraceData的對像是XPathNavigatorDataItem物件,則不會逸出。 XPathNavigator如果 用於數據物件,則會MoveToRoot呼叫 方法,而且整個根節點會追蹤為未逸出的數據。

逸出的字元
& &
< <
> >
" "
|'
0xD
0xA

建構函式

XmlWriterTraceListener(Stream)

使用指定的資料流做為偵錯和追蹤輸出的接收者,初始化 XmlWriterTraceListener 類別的新執行個體。

XmlWriterTraceListener(Stream, String)

使用指定的資料流做為偵錯和追蹤輸出的接收者,以指定的名稱初始化 XmlWriterTraceListener 類別的新執行個體。

XmlWriterTraceListener(String)

使用指定的檔案做為偵錯和追蹤輸出的接收者,初始化 XmlWriterTraceListener 類別的新執行個體。

XmlWriterTraceListener(String, String)

使用指定的檔案做為偵錯和追蹤輸出的接收者,以指定的名稱初始化 XmlWriterTraceListener 類別的新執行個體。

XmlWriterTraceListener(TextWriter)

使用指定的寫入器做為偵錯和追蹤輸出的接收者,初始化 XmlWriterTraceListener 類別的新執行個體。

XmlWriterTraceListener(TextWriter, String)

使用指定的寫入器做為偵錯和追蹤輸出的接收者,以指定的名稱初始化 XmlWriterTraceListener 類別的新執行個體。

屬性

Attributes

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

(繼承來源 TraceListener)
Filter

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

(繼承來源 TraceListener)
IndentLevel

取得或設定縮排層級。

(繼承來源 TraceListener)
IndentSize

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

(繼承來源 TraceListener)
IsThreadSafe

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

(繼承來源 TraceListener)
Name

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

(繼承來源 TraceListener)
NeedIndent

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

(繼承來源 TraceListener)
TraceOutputOptions

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

(繼承來源 TraceListener)
Writer

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

(繼承來源 TextWriterTraceListener)

方法

Close()

關閉這個接聽程式的 Writer,使其不再接收追蹤或偵錯輸出。

CreateObjRef(Type)

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

(繼承來源 MarshalByRefObject)
Dispose()

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

(繼承來源 TraceListener)
Dispose(Boolean)

處置這個 TextWriterTraceListener 物件。

(繼承來源 TextWriterTraceListener)
Equals(Object)

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

(繼承來源 Object)
Fail(String)

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

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

寫入包括錯誤訊息的追蹤資訊,以及詳細的錯誤訊息至檔案或資料流。

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)

寫入追蹤資訊,及事件資訊至檔案或資料流。

TraceData(TraceEventCache, String, TraceEventType, Int32, Object[])

寫入追蹤資訊、資料物件,以及事件資訊至檔案或資料流。

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

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

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

寫入追蹤資訊、訊息,以及事件資訊至檔案或資料流。

TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[])

寫入追蹤資訊、格式化訊息,以及事件資訊至檔案或資料流。

TraceTransfer(TraceEventCache, String, Int32, String, Guid)

寫入包含相關活動之識別的追蹤資訊、訊息,以及事件資訊至檔案或資料流。

Write(Object)

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

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

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

(繼承來源 TraceListener)
Write(String)

寫入逐字規範訊息至檔案或資料流,不加任何其他內容資訊。

Write(String, String)

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

(繼承來源 TraceListener)
WriteIndent()

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

(繼承來源 TraceListener)
WriteLine(Object)

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

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

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

(繼承來源 TraceListener)
WriteLine(String)

寫入逐字規範訊息至檔案或資料流,不加任何其他內容資訊,後面附上目前的行結束字元。

WriteLine(String, String)

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

(繼承來源 TraceListener)

適用於