다음을 통해 공유


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 instance 만들려면 관리되지 않는 코드 권한이 있어야 합니다.

클래스는 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 주로 클래스에서 사용하기 TraceSource 위한 것입니다. 및 WriteLine 메서드는 WriteDebug 클래스에서 Trace 호출할 수 있으며 값을 제공하지 않는 XML 요소에 대해 기본값이 TraceDebug 제공됩니다.

다음 표에서는 XML 출력의 요소와 특성을 설명합니다.

요소 특성 출력 참고
CallStack None 속성에 플래그가 Callstack 있는지 확인합니다 TraceOutputOptions . 또는 < 와 같은 > 특수 문자는 이스케이프 시퀀스로 바뀝니다. 다음의 이스케이프된 문자 번역 테이블을 참조하세요.
Computer None 항상 있습니다. MachineName 속성 값
Correlation ActivityID 항상 존재 지정하지 않으면 기본값은 빈 GUID입니다.
RelatedActivityID Trace 메서드 호출에서 매개 변수의 relatedActivityId 존재에 따라 달라집니다. TraceTransfer 메서드의 relatedActivityId 매개 변수입니다.
DataItem None 메서드의 data 매개 변수에 TraceData 따라 달라집니다. 이 요소는 요소 또는 요소의 배열을 포함할 수 있으므로 값은 요소 아래에 TraceData 노드 집합 DataItem 으로 기록됩니다.

데이터 출력은 전달된 데이터 개체의 메서드를 사용합니다 ToString .
EventID None 항상 있습니다. 매개 변수 입력(id).
Execution ProcessName 항상 있습니다. 에서 TraceEventCache
ProcessID 항상 있습니다. 에서 TraceEventCache
ThreadID 항상 있습니다. 에서 TraceEventCache
Level None 항상 있습니다. 매개 변수 입력(의 숫자 값)입니다 eventType. 255보다 큰 매개 변수 값은 255로 출력됩니다.
LogicalOperationStack None 속성에 플래그가 있는지 TraceOutputOptions 확인 LogicalOperationStack 합니다. 둘 이상의 논리 작업이 있을 수 있으므로 값은 요소 아래에 LogicalOperationStack 노드로 LogicalOperation 기록됩니다.
Message None Trace 메서드 호출에서 메시지의 존재에 따라 달라집니다. 서식 인수가 제공된 경우 이 요소는 서식이 지정된 메시지입니다.
Source Name 항상 있습니다. 매개 변수 입력.
SubType Name 항상 있습니다. 매개 변수 입력.
TimeCreated SystemTime 항상 있습니다. TraceEventCache없는 경우 기본값은 현재 시간입니다.
TimeStamp None 속성에 플래그가 있는지 TraceOutputOptions 확인 Timestamp 합니다. 에서 TraceEventCache
Type None 항상 있습니다. 항상 값 3입니다.

다음 표에서는 XML 출력에서 이스케이프되는 문자를 보여줍니다. 이스케이프는 요소를 제외한 모든 요소와 특성에서 발생하며, 메서드의 DataItemTraceData 매개 변수에 data 전달된 개체가 개체인 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)

관련 작업의 ID를 포함한 추적 정보, 메시지 및 이벤트 정보를 파일이나 스트림에 씁니다.

Write(Object)

ToString() 클래스를 구현할 때 생성한 수신기에 개체의 TraceListener 메서드 값을 씁니다.

(다음에서 상속됨 TraceListener)
Write(Object, String)

ToString() 클래스를 구현할 때 생성한 수신기에 범주 이름 및 개체의 TraceListener 메서드 값을 씁니다.

(다음에서 상속됨 TraceListener)
Write(String)

추가 컨텍스트 정보가 없는 verbatim 메시지를 파일이나 스트림에 씁니다.

Write(String, String)

TraceListener 클래스를 구현할 때 생성한 수신기에 범주 이름 및 메시지를 씁니다.

(다음에서 상속됨 TraceListener)
WriteIndent()

이 클래스를 구현할 때 생성한 수신기에 들여쓰기를 하고 NeedIndent 속성을 false로 다시 설정합니다.

(다음에서 상속됨 TraceListener)
WriteLine(Object)

ToString() 클래스를 구현할 때 생성한 수신기에 개체의 TraceListener 메서드 값을 쓴 다음 줄 종결자를 씁니다.

(다음에서 상속됨 TraceListener)
WriteLine(Object, String)

ToString() 클래스를 구현할 때 생성한 수신기에 범주 이름 및 개체의 TraceListener 메서드 값을 쓴 다음 줄 종결자를 씁니다.

(다음에서 상속됨 TraceListener)
WriteLine(String)

현재 줄 종결자가 뒤에 오고 추가 컨텍스트 정보가 없는 verbatim 메시지를 파일이나 스트림에 씁니다.

WriteLine(String, String)

TraceListener 클래스를 구현할 때 생성한 수신기에 범주 이름 및 메시지를 쓴 다음 줄 종결자를 씁니다.

(다음에서 상속됨 TraceListener)

적용 대상