다음을 통해 공유


방법: 추적 수신기 만들기 및 초기화

참고 항목

이 문서는 .NET Framework와 관련이 있습니다. .NET 6 이상 버전을 비롯하여 .NET의 최신 구현에는 적용되지 않습니다.

System.Diagnostics.DebugSystem.Diagnostics.Trace 클래스는 메시지를 수신하고 처리하는 수신기라는 개체에 메시지를 보냅니다. 추적이나 디버깅을 사용하면 이러한 수신기 중 하나인 System.Diagnostics.DefaultTraceListener가 자동으로 만들어지고 초기화됩니다. Trace 또는 Debug 출력을 추가 소스에 보내려면 추가 추적 수신기를 만들고 초기화해야 합니다.

수신기를 만들 때는 애플리케이션에 필요한 내용을 반영해야 합니다. 예를 들어 모든 추적 출력의 텍스트 레코드가 필요하면 사용될 경우 모든 출력을 새 텍스트 파일에 쓰는 TextWriterTraceListener 수신기를 만듭니다. 반면에 애플리케이션 실행 중에만 출력을 보려면 모든 출력을 콘솔 창으로 보내는 ConsoleTraceListener 수신기를 만듭니다. EventLogTraceListener는 추적 출력을 이벤트 로그에 보낼 수 있습니다. 자세한 내용은 추적 수신기를 참조하세요.

애플리케이션 구성 파일 또는 코드에서 추적 수신기를 만들 수 있습니다. 애플리케이션 구성 파일을 사용하면 코드를 변경할 필요 없이 추적 수신기를 추가, 수정 또는 제거할 수 있으므로 애플리케이션 구성 파일을 사용하는 것이 좋습니다.

구성 파일을 사용하여 추적 수신기를 만들고 사용하려면

  1. 애플리케이션 구성 파일에서 추적 수신기를 선언합니다. 만드는 수신기에 다른 개체가 필요하면 이들 개체도 선언합니다. 다음 예제에서는 텍스트 파일을 TextWriterOutput.log에 쓰는 myListener라는 수신기를 만드는 방법을 보여 줍니다.

    <configuration>
      <system.diagnostics>
        <trace autoflush="false" indentsize="4">
          <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
            <remove name="Default" />
          </listeners>
        </trace>
      </system.diagnostics>
    </configuration>
    
  2. 코드에서 Trace 클래스를 사용하여 추적 수신기에 메시지를 씁니다.

    Trace.TraceInformation("Test message.")
    ' You must close or flush the trace to empty the output buffer.
    Trace.Flush()
    
    Trace.TraceInformation("Test message.");
    // You must close or flush the trace to empty the output buffer.
    Trace.Flush();
    

코드에서 추적 수신기를 만들고 사용하려면

  • 추적 수신기를 Listeners 컬렉션에 추가하고 추적 정보를 수신기에 보냅니다.

    Trace.Listeners.Add(New TextWriterTraceListener("TextWriterOutput.log", "myListener"))
    Trace.TraceInformation("Test message.")
    ' You must close or flush the trace to empty the output buffer.
    Trace.Flush()
    
    Trace.Listeners.Add(new TextWriterTraceListener("TextWriterOutput.log", "myListener"));
    Trace.TraceInformation("Test message.");
    // You must close or flush the trace to empty the output buffer.
    Trace.Flush();
    

    - 또는 -

  • 수신기에서 추적 출력을 수신하지 않으려면 Listeners 컬렉션에 수신기를 추가하지 마세요. 수신기의 고유한 출력 메서드를 호출하여 Listeners 컬렉션과 관계없이 수신기를 통해 출력을 내보낼 수 있습니다. 다음 예제에서는 Listeners 컬렉션에 없는 수신기에 줄을 쓰는 방법을 보여 줍니다.

    Dim myListener As New TextWriterTraceListener("TextWriterOutput.log", "myListener")
    myListener.WriteLine("Test message.")
    ' You must close or flush the trace listener to empty the output buffer.
    myListener.Flush()
    
    TextWriterTraceListener myListener = new TextWriterTraceListener("TextWriterOutput.log", "myListener");
    myListener.WriteLine("Test message.");
    // You must close or flush the trace listener to empty the output buffer.
    myListener.Flush();
    

참고 항목