XmlWriterTraceListener 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將追蹤或除錯以 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 作為前綴。
備註
監聽器方法旨在被 、 Trace和 TraceSource 類別的方法Debug呼叫。 監聽器方法並非設計用來直接從應用程式碼呼叫。 XmlWriterTraceListener聆聽器主要是供類別使用TraceSource。 和 方法可由 Trace and Debug 類別呼叫,且預設值為 與 不提供 的 XML 元素DebugTrace。WriteLineWrite
下表描述了 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,若傳遞TraceData給data方法參數的物件是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) |