XmlWriterTraceListener 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將追蹤或偵錯輸出做為 XML 編碼資料導向 TextWriter 或 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
備註
注意
您必須具有 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>
類別 XmlWriterTraceListener 會 Filter 從基類 TraceListener繼承 屬性。 屬性 Filter 允許接聽程式的其他追蹤輸出篩選層級。 如果有篩選存在, Trace
追蹤接聽程式的方法會呼叫 ShouldTrace 篩選的 方法,以判斷是否要發出追蹤。
注意
如果嘗試寫入使用中或無法使用的檔案,則檔名會自動加上 GUID 的前置詞。
注意
接聽程式方法旨在由、Trace類別 TraceSource 的方法Debug呼叫。 接聽程式方法不適合直接從應用程式程式代碼呼叫。 接 XmlWriterTraceListener 聽程式主要是供類別使用 TraceSource 。 Write和方法可以由 Trace 和 WriteLineDebug 類別呼叫,而且會為 XML 元素提供預設值,Trace但Debug未提供 值。
下表描述 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) |