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 значение |
WriteLine(Object) |
Записывает значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
WriteLine(Object, String) |
Записывает имя категории и значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
WriteLine(String) |
Дословно записывает сообщение без какой-либо дополнительной контекстной информации, за которым следует знак окончания текущей строки в файл или поток. |
WriteLine(String, String) |
Записывает имя категории и сообщение, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |