추적 수신기
Trace, Debug 및 TraceSource를 사용할 경우에는 전송된 메시지를 수집하고 기록하는 메커니즘이 있어야 합니다. 수신기가 추적 메시지를 수신합니다. 수신기의 목적은 추적 메시지를 수집, 저장 및 라우팅하는 것입니다. 수신기는 추적 출력을 로그, 창 또는 텍스트 파일과 같은 적절한 대상에 보냅니다.
수신기는 Debug, Trace 및 TraceSource 클래스에서 사용할 수 있는데 각 클래스는 해당 출력을 다양한 수신기 개체에 전달할 수 있습니다. 다음은 자주 사용되는 미리 정의된 수신기입니다.
TextWriterTraceListener는 출력을 TextWriter 클래스의 인스턴스로 리디렉션하거나 Stream 클래스인 항목으로 리디렉션합니다. 콘솔이나 파일이 Stream 클래스이므로 콘솔이나 파일에 쓸 수도 있습니다.
EventLogTraceListener는 출력을 이벤트 로그에 리디렉션합니다.
DefaultTraceListener는 Write 및 WriteLine 메시지를 OutputDebugString 메서드와 Debugger.Log 메서드로 내보냅니다. 그리고 Visual Studio에서는 디버깅 메시지가 출력 창에 표시됩니다. Fail 및 Assert 오류 메시지도 OutputDebugString Windows API와 Debugger.Log 메서드로 내보내고 메시지 상자를 표시합니다. Listeners 컬렉션에 자동으로 포함되는 DefaultTraceListener가 자동으로 포함되는 유일한 수신기이기 때문에 이 동작이 Debug 및 Trace 메시지의 기본 동작입니다.
ConsoleTraceListener는 추적 또는 디버깅 출력을 표준 출력이나 표준 오류 스트림으로 보냅니다.
DelimitedListTraceListener는 추적 또는 디버깅 출력을 스트림 작성기와 같은 텍스트 작성기 또는 파일 스트림과 같은 스트림으로 보냅니다. 추적 출력은 Delimiter 속성이 지정한 구분 기호를 사용하는 구분된 텍스트 형식입니다.
XmlWriterTraceListener는 추적 또는 디버깅 출력을 XML로 인코딩된 데이터로서 TextWriter 또는 FileStream과 같은 Stream으로 보냅니다.
DefaultTraceListener 외의 수신기가 Debug, Trace 및 TraceSource 출력을 받도록 하려면 해당 수신기를 Listeners 컬렉션에 추가해야 합니다. 자세한 내용은 방법: 추적 수신기 만들기 및 초기화 및 방법: 추적 수신기와 함께 TraceSource 및 필터 사용을 참조하십시오. Listeners 컬렉션의 모든 수신기는 추적 출력 메서드에서 같은 메시지를 가져옵니다. TextWriterTraceListener와 EventLogTraceListener 수신기를 설정하는 경우를 예로 들 수 있습니다. 이때 각 수신기는 같은 메시지를 받습니다. TextWriterTraceListener는 해당 출력을 스트림으로 보내고 EventLogTraceListener는 해당 출력을 이벤트 로그로 보냅니다.
다음 예제에서는 출력을 Listeners 컬렉션으로 보내는 방법을 보여 줍니다.
' 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");
디버그 및 추적은 같은 Listeners 컬렉션을 공유하므로 수신기 개체를 응용 프로그램의 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));
개발자 정의 수신기
TraceListener 기본 클래스에서 상속하고 해당 메서드를 사용자 지정 메서드로 재정의하여 개인적인 수신기를 정의할 수 있습니다. 개발자 정의 수신기를 만드는 방법에 대한 자세한 내용은 .NET Framework 참조의 TraceListener를 참조하십시오.