共用方式為


XmlWriterTraceListener 類別

定義

將追蹤或除錯以 XML 編碼資料的輸出指示至 TextWriter a 或 Stream,例如 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

備註

備註

你必須擁有非管理程式碼權限才能建立該 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>

XmlWriterTraceListener 類別繼 Filter 承自基底類別 TraceListener的屬性。 此 Filter 特性允許在監聽者處進行額外層級的追蹤輸出過濾。 若存在濾波器, Trace 追蹤監聽者的方法是呼叫 ShouldTrace 濾波器的方法來判斷是否要發射該追蹤。

備註

若嘗試寫入正在使用或無法使用的檔案,檔名會自動以 GUID 作為前綴。

備註

監聽器方法旨在被 、 TraceTraceSource 類別的方法Debug呼叫。 監聽器方法並非設計用來直接從應用程式碼呼叫。 XmlWriterTraceListener聆聽器主要是供類別使用TraceSource。 和 方法可由 Trace and Debug 類別呼叫,且預設值為 與 不提供 的 XML 元素DebugTraceWriteLineWrite

下表描述了 XML 輸出的元素與屬性。

元素 屬性 Output Notes
CallStack 沒有 這取決於該地TraceOutputOptions有沒有旗Callstack幟。 特殊字元 > 如 或 < 會被跳脫序列取代。 請參考以下的逃脫字元翻譯表。
Computer 沒有 一律存在。 房產的 MachineName 價值。
Correlation ActivityID 永遠存在 若未指定,預設為空 GUID。
RelatedActivityID 這取決於 Trace 方法呼叫中參數的存在 relatedActivityId relatedActivityId方法的TraceTransfer參數。
DataItem 沒有 這取決於 data 方法的 TraceData 參數。 此元素可包含元素陣列或單一元素,因此值會寫成 DataItem 元素下方 TraceData 的節點集合。

資料輸出使用 ToString 傳入資料物件的方法。
EventID 沒有 一律存在。 參數輸入(id)。
Execution ProcessName 一律存在。 來自 TraceEventCache
ProcessID 一律存在。 來自 TraceEventCache
ThreadID 一律存在。 來自 TraceEventCache
Level 沒有 一律存在。 參數輸入(的 eventType數值)。 參數值大於255時輸出為255。
LogicalOperationStack 沒有 這取決於該地TraceOutputOptions有沒有旗LogicalOperationStack幟。 可以有多個邏輯操作,因此這些值會寫成 LogicalOperation 元素下的 LogicalOperationStack 節點。
Message 沒有 這取決於 Trace 方法呼叫中是否有訊息存在。 若提供格式化參數,此元素為格式化訊息。
Source Name 一律存在。 參數輸入。
SubType Name 一律存在。 參數輸入。
TimeCreated SystemTime 一律存在。 如果 不存在 TraceEventCache,預設時間為當前時間。
TimeStamp 沒有 這取決於該地TraceOutputOptions有沒有旗Timestamp幟。 來自 TraceEventCache
Type 沒有 一律存在。 永遠是價值 3.

下表顯示 XML 輸出中跳脫的字元。 逃逸發生在所有元素與屬性中,唯獨該元素除外DataItem,若傳遞TraceDatadata方法參數的物件是XPathNavigator物件,則該元素不會逃逸。 若資料物件使用 a XPathNavigator ,則呼叫該 MoveToRoot 方法,並追蹤整個根節點為未逃逸資料。

逃脫角色 價值
& &
< <
> >
" "
|'
0xD
0xA

建構函式

名稱 Description
XmlWriterTraceListener(Stream, String)

初始化一個以指定名稱的類別新實例 XmlWriterTraceListener ,並以指定的串流作為除錯與追蹤輸出的接收者。

XmlWriterTraceListener(Stream)

初始化該類別的新實例 XmlWriterTraceListener ,使用指定的串流作為除錯與追蹤輸出的接收者。

XmlWriterTraceListener(String, String)

以指定名稱初始化類別的新實例 XmlWriterTraceListener ,並以指定檔案作為除錯與追蹤輸出的接收者。

XmlWriterTraceListener(String)

初始化該類別的新實例 XmlWriterTraceListener ,並以指定的檔案作為除錯與追蹤輸出的接收者。

XmlWriterTraceListener(TextWriter, String)

初始化一個以指定名稱的類別新實例 XmlWriterTraceListener ,並以指定的寫入者作為除錯與追蹤輸出的接收者。

XmlWriterTraceListener(TextWriter)

初始化該類別的新實例 XmlWriterTraceListener ,使用指定的寫入者作為除錯與追蹤輸出的接收者。

屬性

名稱 Description
Attributes

取得應用程式設定檔中定義的自訂追蹤監聽器屬性。

(繼承來源 TraceListener)
Filter

取得或設定追蹤監聽器的追蹤過濾器。

(繼承來源 TraceListener)
IndentLevel

取得或設定縮排等級。

(繼承來源 TraceListener)
IndentSize

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

(繼承來源 TraceListener)
IsThreadSafe

會獲得一個值,表示追蹤監聽器是否執行緒安全。

(繼承來源 TraceListener)
Name

為此 TraceListener命名或命名。

(繼承來源 TraceListener)
NeedIndent

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

(繼承來源 TraceListener)
TraceOutputOptions

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

(繼承來源 TraceListener)
Writer

接收或設定接收追蹤或除錯輸出的文字寫入器。

(繼承來源 TextWriterTraceListener)

方法

名稱 Description
Close()

關閉該監聽器的 , Writer 使其不再接收追蹤或除錯輸出。

CreateObjRef(Type)

建立一個物件,包含產生代理伺服器所需的所有相關資訊,用於與遠端物件通訊。

(繼承來源 MarshalByRefObject)
Dispose()

釋放所有由 TraceListener.

(繼承來源 TraceListener)
Dispose(Boolean)

處理此 TextWriterTraceListener 物。

(繼承來源 TextWriterTraceListener)
Equals(Object)

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

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

會將追蹤資訊(包括錯誤訊息及詳細錯誤訊息)寫入檔案或串流。

Fail(String)

當你實作類別 TraceListener 時,會向你建立的監聽器發出錯誤訊息。

(繼承來源 TraceListener)
Flush()

沖洗輸出緩衝區。Writer

(繼承來源 TextWriterTraceListener)
GetHashCode()

做為預設哈希函式。

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

取得目前控制此實例生命週期政策的終身服務物件。

(繼承來源 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, String, Object[])

會將追蹤資訊、格式化訊息及事件資訊寫入檔案或串流。

TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

會將追蹤資訊、訊息及事件資訊寫入檔案或串流。

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

將追蹤與事件資訊寫入聽者專屬輸出。

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

會將追蹤資訊寫入檔案或串流,包括相關活動的身份、訊息及事件資訊。

Write(Object, String)

在你實作TraceListener類別時,會把類別名稱和物件ToString()方法的值寫給你建立的監聽器。

(繼承來源 TraceListener)
Write(Object)

它會把物件 ToString() 方法的值寫給你實作 TraceListener 類別時建立的監聽器。

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

當你實作 TraceListener 類別時,會寫一個類別名稱和訊息給你建立的監聽器。

(繼承來源 TraceListener)
Write(String)

在檔案或串流中,逐字寫入訊息,且不需額外上下文資訊。

WriteIndent()

當你實作這個類別時,會把縮排寫入你建立的監聽器,並將屬性重設 NeedIndentfalse

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

在你實作TraceListener類別時,會把類別名稱和物件ToString()方法的值寫給你建立的監聽器,接著是行終止符。

(繼承來源 TraceListener)
WriteLine(Object)

它會將物件 ToString() 方法的值寫入你實作 TraceListener 類別時建立的監聽器,接著是行終止符。

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

在你實作 TraceListener 類別時,會寫一個類別名稱和訊息給你建立的監聽器,接著是行終止符。

(繼承來源 TraceListener)
WriteLine(String)

會逐字寫入一個訊息,沒有額外的上下文資訊,接著是當前的行終止符,指向檔案或串流。

適用於