다음을 통해 공유


추적 수신기

비고

이 문서는 .NET Framework에만 적용됩니다. .NET 6 이상 버전을 포함하여 .NET의 최신 구현에는 적용되지 않습니다.

추적, 디버그TraceSource를 사용하는 경우 전송된 메시지를 수집하고 기록하는 메커니즘이 있어야 합니다. 추적 메시지는 수신기에 의해 수신 됩니다. 수신기의 목적은 추적 메시지를 수집, 저장 및 라우팅하는 것입니다. 수신기는 추적 출력을 로그, 창 또는 텍스트 파일과 같은 적절한 대상으로 전달합니다.

수신기는 디버그, 추적TraceSource 클래스에서 사용할 수 있으며, 각 수신기는 다양한 수신기 개체에 출력을 보낼 수 있습니다. 다음은 일반적으로 사용되는 미리 정의된 수신기입니다.

  • TextWriterTraceListener 클래스의 인스턴스 또는 TextWriter 클래스인 모든 항목으로 출력이 리디렉션됩니다. 콘솔 또는 파일에 쓸 수 있는 것은 클래스 Stream 때문입니다.

  • 출력 EventLogTraceListener 을 이벤트 로그로 리디렉션합니다.

  • DefaultTraceListener 발신자는 WriteWriteLine 메시지를 OutputDebugStringDebugger.Log 메서드로 전송한다. Visual Studio에서 이렇게 하면 디버깅 메시지가 출력 창에 표시됩니다. 실패 및 실패한 Assert 메시지도 OutputDebugString Windows API 및 Debugger.Log 메서드로 내보내고 메시지 상자가 표시됩니다. DefaultTraceListener는 모든 컬렉션에 자동으로 포함되고 수신기만 자동으로 포함되므로 이 동작은 디버그Listeners 메시지의 기본 동작입니다.

  • 추적 ConsoleTraceListener 또는 디버깅 출력을 표준 출력 또는 표준 오류 스트림으로 전달합니다.

  • DelimitedListTraceListener 추적 또는 디버깅 출력을 스트림 작성기와 같은 텍스트 작성기 또는 파일 스트림과 같은 스트림으로 전달합니다. 추적 출력은 속성에 지정된 Delimiter 구분 기호를 사용하는 구분된 텍스트 형식입니다.

  • XmlWriterTraceListenerTextWriter 또는 Stream와 같은 FileStream에 XML로 인코딩된 데이터로서 추적 또는 디버깅 출력을 전달합니다.

DefaultTraceListener, 추적 출력을 수신하는 수신기 외에 TraceSource 수신기를 원하는 경우 컬렉션에 Listeners 추가해야 합니다. 자세한 내용은 방법: 추적 수신기 만들기 및 초기화방법: 추적 수신기에서 TraceSource 및 필터 사용 수신기 컬렉션의 모든 수신기는 추적 출력 메서드에서 동일한 메시지를 가져옵니다. 예를 들어 TextWriterTraceListenerEventLogTraceListener라는 두 개의 수신기를 설정한다고 가정합니다. 각 수신기는 동일한 메시지를 받습니다. TextWriterTraceListener는 출력을 스트림으로 전달하고 EventLogTraceListener는 해당 출력을 이벤트 로그로 전달합니다.

다음 예제에서는 수신기 컬렉션에 출력을 보내는 방법을 보여줍니다.

' Use this example when debugging.
Debug.WriteLine("Error in Widget 42")
' Use this example when tracing.
Trace.WriteLine("Error in Widget 42")
// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");

디버그 및 추적은 동일한 수신기 컬렉션을 공유하므로 애플리케이션의 Debug.Listeners 컬렉션에 수신기 개체를 추가하면 Trace.Listeners 컬렉션에도 추가됩니다.

다음 예제에서는 수신기를 사용하여 추적 정보를 콘솔로 보내는 방법을 보여줍니다.

Trace.Listeners.Clear()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
   new System.Diagnostics.TextWriterTraceListener(Console.Out));

Developer-Defined 수신기

TraceListener 기본 클래스에서 상속하고 사용자 지정된 메서드를 사용하여 해당 메서드를 재정의하여 고유한 수신기를 정의할 수 있습니다. 개발자 정의 수신기를 만드는 방법에 대한 자세한 내용은 .NET Framework 참조를 참조 TraceListener 하세요.

참고하십시오