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

注解

注意

必须具有非托管代码权限才能创建 类的 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 作为前缀。

注意

侦听器方法旨在由 、 TraceTraceSource 类的方法Debug调用。 侦听器方法不应直接从应用程序代码调用。 侦听器 XmlWriterTraceListener 主要用于 类 TraceSourceWriteWriteLine 方法可由 和 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)

方法

Close()

关闭该侦听器的 Writer,以使其不再接收跟踪或调试输出。

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放由 TraceListener 使用的所有资源。

(继承自 TraceListener)
Dispose(Boolean)

处置此 TextWriterTraceListener 对象。

(继承自 TextWriterTraceListener)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Fail(String)

实现 TraceListener 类时,向所创建的侦听器发出错误信息。

(继承自 TraceListener)
Fail(String, String)

将包含错误信息和详细错误信息的跟踪信息写入文件或流中。

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)

向特定于侦听器的输出写入跟踪和事件信息。

(继承自 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)

实现 TraceListener 类时,向所创建的侦听器写入对象的 ToString() 方法值,后跟行结束符。

(继承自 TraceListener)
WriteLine(Object, String)

实现 TraceListener 类时,向所创建的侦听器写入类别名称和对象的 ToString() 方法值,后跟行结束符。

(继承自 TraceListener)
WriteLine(String)

将不包含任何其他上下文信息且后跟当前行结束符的原义消息写入文件或流中。

WriteLine(String, String)

实现 TraceListener 类时,向所创建的侦听器写入类别名称和消息,后跟行结束符。

(继承自 TraceListener)

适用于