Поделиться через


XmlWriterTraceListener Класс

Определение

Направляет выходные данные отладки или трассировки в виде закодированных 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 записи в журналы файлов как escape-, так и невключаемых данных.

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 отображается в следующих таблицах. Для отображения выходных данных XML можно использовать средство просмотра трассировки служб (SvcTraceViewer.exe ).

В коде 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.

Примечание

Методы прослушивателя предназначены для вызова методами Debugклассов , Traceи TraceSource . Методы прослушивателя не предназначены для вызова непосредственно из кода приложения. Прослушиватель XmlWriterTraceListener в основном предназначен для использования классом TraceSource . Write Методы и WriteLine могут вызываться классами Trace и Debug , а значения по умолчанию предоставляются для XML-элементов, для которых Trace и Debug не предоставляются значения.

В следующей таблице описаны элементы и атрибуты выходных данных XML.

Элемент Атрибуты Вывод Примечания
CallStack Нет Зависит от наличия флага Callstack в свойстве TraceOutputOptions . Специальные символы, такие как > или < , заменяются escape-последовательностью. См. таблицу перевода escape-символов, приведенную ниже.
Computer Нет Всегда присутствует. Значение свойства MachineName.
Correlation ActivityID Всегда присутствует Если значение не указано, по умолчанию используется пустой GUID.
RelatedActivityID Зависит от наличия relatedActivityId параметра в вызове метода Trace. Параметр relatedActivityId метода TraceTransfer.
DataItem Нет Зависит data от параметра TraceData метода . Этот элемент может содержать массив элементов или один элемент, поэтому значения записываются в виде набора DataItem узлов в элементе TraceData .

В выходных данных используется ToString метод переданных объектов данных.
EventID Нет Всегда присутствует. Входные данные параметра (id).
Execution ProcessName Всегда присутствует. TraceEventCacheИз .
ProcessID Всегда присутствует. Из .TraceEventCache
ThreadID Всегда присутствует. Из .TraceEventCache
Level Нет Всегда присутствует. Входные данные параметра (числовое значение ).eventType Значения параметров больше 255 выводятся как 255.
LogicalOperationStack Нет Зависит от наличия флага LogicalOperationStack в свойстве TraceOutputOptions . Может быть несколько логических операций, поэтому значения записываются как LogicalOperation узлы под элементом LogicalOperationStack .
Message Нет Зависит от наличия сообщения в вызове метода Trace. Этот элемент является форматированным сообщением, если указаны аргументы форматирования.
Source Name Всегда присутствует. Входные данные параметра.
SubType Name Всегда присутствует. Входные данные параметра.
TimeCreated SystemTime Всегда присутствует. Если он отсутствует в TraceEventCache, по умолчанию используется текущее время.
TimeStamp Нет Зависит от наличия флага Timestamp в свойстве TraceOutputOptions . Из .TraceEventCache
Type Нет Всегда присутствует. Всегда значение 3.

В следующей таблице показаны символы, которые экранируются в выходных данных XML. Экранирование происходит во всех элементах DataItem и атрибутах, за исключением элемента , который не экранируется, если объект, переданный data параметру TraceData метода, является XPathNavigator объектом . XPathNavigator Если для объекта данных используется , вызывается метод , MoveToRoot и весь корневой узел трассируется как неэкранированные данные.

Escape-символ Значение
& &
< <
> >
" "
|'
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)

Записывает значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener.

(Унаследовано от TraceListener)
WriteLine(Object, String)

Записывает имя категории и значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener.

(Унаследовано от TraceListener)
WriteLine(String)

Дословно записывает сообщение без какой-либо дополнительной контекстной информации, за которым следует знак окончания текущей строки в файл или поток.

WriteLine(String, String)

Записывает имя категории и сообщение, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener.

(Унаследовано от TraceListener)

Применяется к