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
注解
注意
必须具有非托管代码权限才能创建 类的 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从基类 TraceListener继承 Filter 属性。 属性 Filter 允许对侦听器进行额外的跟踪输出筛选。 如果存在筛选器,则 Trace
跟踪侦听器的方法会调用 ShouldTrace 筛选器的 方法,以确定是否发出跟踪。
注意
如果尝试写入正在使用或不可用的文件,则文件名将自动以 GUID 作为前缀。
注意
侦听器方法旨在由 、 Trace和 TraceSource 类的方法Debug调用。 侦听器方法不应直接从应用程序代码调用。 侦听器 XmlWriterTraceListener 主要用于 类 TraceSource 。 Write和 WriteLine 方法可由 和 Debug 类调用Trace,并且为 和 未提供值的 XML 元素TraceDebug提供默认值。
下表描述了 XML 输出的元素和属性。
元素 | 属性 | 输出 | 说明 |
---|---|---|---|
CallStack |
无 | 取决于 属性中TraceOutputOptions是否存在 Callstack 标志。 | 特殊字符(如 > 或 < )将替换为转义序列。 请参阅后面的转义字符转换表。 |
Computer |
无 | 始终显示。 | MachineName 属性的值。 |
Correlation |
ActivityID |
始终存在 | 如果未指定,则默认值为空 GUID。 |
RelatedActivityID |
取决于 Trace 方法调用中是否存在 relatedActivityId 参数。 |
TraceTransfer 方法的 relatedActivityId 参数。 |
|
DataItem |
无 | 取决于 data 方法的参数 TraceData 。 |
此元素可以包含一个元素数组或一个元素,因此值将作为元素下的TraceData 一组DataItem 节点写入。数据输出使用 ToString 传入数据对象的 方法。 |
EventID |
无 | 始终显示。 | 参数输入 (id ) 。 |
Execution |
ProcessName |
始终显示。 | 从 。TraceEventCache |
ProcessID |
始终显示。 | 从 。TraceEventCache | |
ThreadID |
始终显示。 | 从 。TraceEventCache | |
Level |
无 | 始终显示。 | 参数输入 () 的 eventType 数值。 大于 255 的参数值输出为 255。 |
LogicalOperationStack |
无 | 取决于 属性中TraceOutputOptions是否存在 LogicalOperationStack 标志。 | 可以有多个逻辑操作,因此值将作为 LogicalOperation 节点写入 元素下 LogicalOperationStack 。 |
Message |
无 | 取决于跟踪方法调用中是否存在消息。 | 如果提供了格式参数,则此元素是格式化消息。 |
Source |
Name |
始终显示。 | 参数输入。 |
SubType |
Name |
始终显示。 | 参数输入。 |
TimeCreated |
SystemTime |
始终显示。 | 如果 中 TraceEventCache不存在,则默认值为当前时间。 |
TimeStamp |
无 | 取决于 属性中TraceOutputOptions是否存在 Timestamp 标志。 | 从 。TraceEventCache |
Type |
无 | 始终显示。 | 始终为值 3。 |
下表显示了 XML 输出中转义的字符。 转义发生在除 元素之外 DataItem
的所有元素和属性中,如果传递给 data
方法参数 TraceData 的对象是对象 XPathNavigator ,则不会转义元素。 如果将 用于 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) |