XmlWriterTraceListener 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
추적 또는 디버깅 출력을 XML로 인코딩된 데이터(예:
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 클래스에서 TraceDebug 호출할 수 있으며 값을 제공하지 않는 XML 요소에 대해 기본값이 TraceDebug 제공됩니다.WriteLine
다음 표에서는 XML 출력의 요소와 특성에 대해 설명합니다.
| 요소 | 특성 | 출력 | Notes |
|---|---|---|---|
CallStack |
없음 | 속성에 플래그가 Callstack 있는지 여부가 TraceOutputOptions 달라집니다. | 이스케이프 시퀀스와 같은 > 특수 문자 또는 < 이스케이프 시퀀스로 바뀝니다. 다음의 이스케이프된 문자 번역 테이블을 참조하세요. |
Computer |
없음 | 항상 있습니다. | 속성의 값입니다 MachineName . |
Correlation |
ActivityID |
항상 존재 | 지정하지 않으면 기본값은 빈 GUID입니다. |
RelatedActivityID |
Trace 메서드 호출에서 매개 변수의 relatedActivityId 존재에 따라 달라집니다. |
relatedActivityId 메서드의 매개 변수입니다TraceTransfer. |
|
DataItem |
없음 | 메서드의 data 매개 변수에 TraceData 따라 달라집니다. |
이 요소는 요소의 배열 또는 하나의 요소를 포함할 수 있으므로 값은 요소 아래에 TraceData 노드 집합 DataItem 으로 작성됩니다.데이터 출력은 전달된 데이터 개체의 메서드를 사용합니다 ToString . |
EventID |
없음 | 항상 있습니다. | 매개 변수 입력(id). |
Execution |
ProcessName |
항상 있습니다. | 에서 TraceEventCache |
ProcessID |
항상 있습니다. | 에서 TraceEventCache | |
ThreadID |
항상 있습니다. | 에서 TraceEventCache | |
Level |
없음 | 항상 있습니다. | 매개 변수 입력(숫자 값)입니다 eventType. 255보다 큰 매개 변수 값은 255로 출력됩니다. |
LogicalOperationStack |
없음 | 속성에 플래그가 LogicalOperationStack 있는지 여부가 TraceOutputOptions 달라집니다. | 둘 이상의 논리 작업이 있을 수 있으므로 값은 요소 아래에 LogicalOperationStack 노드로 LogicalOperation 기록됩니다. |
Message |
없음 | Trace 메서드 호출에 메시지가 있는지 확인합니다. | 서식 인수가 제공된 경우 이 요소는 서식이 지정된 메시지입니다. |
Source |
Name |
항상 있습니다. | 매개 변수 입력입니다. |
SubType |
Name |
항상 있습니다. | 매개 변수 입력입니다. |
TimeCreated |
SystemTime |
항상 있습니다. | 에 TraceEventCache없는 경우 기본값은 현재 시간입니다. |
TimeStamp |
없음 | 속성에 플래그가 Timestamp 있는지 여부가 TraceOutputOptions 달라집니다. | 에서 TraceEventCache |
Type |
없음 | 항상 있습니다. | 항상 값 3입니다. |
다음 표에서는 XML 출력에서 이스케이프되는 문자를 보여줍니다. 이스케이프는 메서드의 DataItem 매개 변수 TraceData 에 전달된 data 개체가 개체인 경우 이스케이프되지 않는 요소를 제외한 모든 요소와 특성에서 발생 XPathNavigator 합니다.
XPathNavigator 데이터 개체에 사용되는 경우 메서드가 MoveToRoot 호출되고 전체 루트 노드가 이스케이프되지 않은 데이터로 추적됩니다.
| 이스케이프된 문자 | 가치 |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| |' | |
| 0xD | |
| 0xA |
생성자
| Name | Description |
|---|---|
| XmlWriterTraceListener(Stream, String) |
지정된 스트림을 디버깅 및 추적 출력의 XmlWriterTraceListener 수신자로 사용하여 지정된 이름으로 클래스의 새 인스턴스를 초기화합니다. |
| XmlWriterTraceListener(Stream) |
지정된 스트림을 디버깅 및 추적 출력의 XmlWriterTraceListener 수신자로 사용하여 클래스의 새 인스턴스를 초기화합니다. |
| XmlWriterTraceListener(String, String) |
지정된 파일을 디버깅 및 추적 출력의 XmlWriterTraceListener 수신자로 사용하여 지정된 이름으로 클래스의 새 인스턴스를 초기화합니다. |
| XmlWriterTraceListener(String) |
지정된 파일을 디버깅 및 추적 출력의 XmlWriterTraceListener 수신자로 사용하여 클래스의 새 인스턴스를 초기화합니다. |
| XmlWriterTraceListener(TextWriter, String) |
지정된 작성기를 디버깅 및 추적 출력의 XmlWriterTraceListener 받는 사람으로 사용하여 지정된 이름으로 클래스의 새 인스턴스를 초기화합니다. |
| XmlWriterTraceListener(TextWriter) |
지정된 작성기를 디버깅 및 추적 출력의 XmlWriterTraceListener 수신자로 사용하여 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Attributes |
애플리케이션 구성 파일에 정의된 사용자 지정 추적 수신기 특성을 가져옵니다. (다음에서 상속됨 TraceListener) |
| Filter |
추적 수신기에 대한 추적 필터를 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| IndentLevel |
들여쓰기 수준을 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| IndentSize |
들여쓰기의 공백 수를 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| IsThreadSafe |
추적 수신기가 스레드로부터 안전한지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 TraceListener) |
| Name |
이 TraceListener이름을 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| NeedIndent |
출력을 들여쓰는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| TraceOutputOptions |
추적 출력 옵션을 가져오거나 설정합니다. (다음에서 상속됨 TraceListener) |
| Writer |
추적 또는 디버깅 출력을 받는 텍스트 기록기를 가져오거나 설정합니다. (다음에서 상속됨 TextWriterTraceListener) |
메서드
| Name | Description |
|---|---|
| Close() |
Writer 추적 또는 디버깅 출력을 더 이상 받지 않도록 이 수신기에 대한 값을 닫습니다. |
| CreateObjRef(Type) |
원격 개체와 통신하는 데 사용되는 프록시를 생성하는 데 필요한 모든 관련 정보를 포함하는 개체를 만듭니다. (다음에서 상속됨 MarshalByRefObject) |
| Dispose() |
에서 사용하는 모든 리소스를 TraceListener해제합니다. (다음에서 상속됨 TraceListener) |
| Dispose(Boolean) |
이 TextWriterTraceListener 개체를 삭제합니다. (다음에서 상속됨 TextWriterTraceListener) |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| Fail(String, String) |
오류 메시지와 자세한 오류 메시지를 포함한 추적 정보를 파일 또는 스트림에 씁니다. |
| Fail(String) |
클래스를 구현할 때 만든 수신기에 오류 메시지를 내보낸다 TraceListener . (다음에서 상속됨 TraceListener) |
| 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, String, Object[]) |
추적 정보, 형식이 지정된 메시지 및 이벤트 정보를 파일 또는 스트림에 씁니다. |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
추적 정보, 메시지 및 이벤트 정보를 파일 또는 스트림에 씁니다. |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
추적 및 이벤트 정보를 수신기별 출력에 씁니다. (다음에서 상속됨 TraceListener) |
| TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
관련 활동의 ID, 메시지 및 이벤트 정보를 포함한 추적 정보를 파일 또는 스트림에 씁니다. |
| Write(Object, String) |
클래스를 구현 TraceListener 할 때 만든 수신기에 범주 이름과 개체 메서드 값을 ToString() 씁니다. (다음에서 상속됨 TraceListener) |
| Write(Object) |
클래스를 구현 TraceListener 할 때 만든 수신기에 개체 메서드의 ToString() 값을 씁니다. (다음에서 상속됨 TraceListener) |
| Write(String, String) |
클래스를 구현 TraceListener 할 때 만든 수신기에 범주 이름과 메시지를 씁니다. (다음에서 상속됨 TraceListener) |
| Write(String) |
파일 또는 스트림에 추가 컨텍스트 정보 없이 축자 메시지를 씁니다. |
| WriteIndent() |
이 클래스를 구현할 때 만든 수신기에 들여쓰기를 쓰고 속성을 |
| WriteLine(Object, String) |
클래스를 구현 TraceListener 할 때 만든 수신기에 범주 이름 및 개체 메서드의 ToString() 값을 쓴 다음 줄 종결자를 씁니다. (다음에서 상속됨 TraceListener) |
| WriteLine(Object) |
클래스를 구현 TraceListener 할 때 만든 수신기에 개체 메서드의 ToString() 값을 쓴 다음 줄 종결자를 씁니다. (다음에서 상속됨 TraceListener) |
| WriteLine(String, String) |
클래스를 구현 TraceListener 할 때 만든 수신기에 범주 이름 및 메시지를 쓴 다음 줄 종결자를 씁니다. (다음에서 상속됨 TraceListener) |
| WriteLine(String) |
추가 컨텍스트 정보 없이 축자 메시지를 쓴 다음 현재 줄 종결자를 파일 또는 스트림에 씁니다. |