다음을 통해 공유


XmlWriterTraceListener 클래스

정의

추적 또는 디버깅 출력을 XML로 인코딩된 데이터(예: <a0/>)에 전달합니다.

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 주로 클래스에서 사용하기 위한 것입니다 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()

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

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

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

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

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

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

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

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

추가 컨텍스트 정보 없이 축자 메시지를 쓴 다음 현재 줄 종결자를 파일 또는 스트림에 씁니다.

적용 대상