다음을 통해 공유


추적 및 메시지 로깅

TracingAndLogging 샘플은 추적 및 메시지 로깅을 사용하도록 설정하는 방법을 보여 줍니다. 결과 추적 및 메시지 로그는 서비스 추적 뷰어 도구(SvcTraceViewer.exe)를 사용하여 볼 수 있습니다. 이 샘플은 시작 안내에 기반으로 합니다.

비고

이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.

추적

WCF(Windows Communication Foundation)는 네임스페이스에 정의된 추적 메커니즘을 System.Diagnostics 사용합니다. 이 추적 모델에서 추적 데이터는 애플리케이션이 구현하는 추적 원본에 의해 생성됩니다. 각 원본은 이름으로 식별됩니다. 추적 소비자는 정보를 검색하려는 추적 원본에 대한 추적 수신기를 만듭니다. 추적 데이터를 수신하려면 추적 원본에 대한 수신기를 만들어야 합니다. WCF에서 서비스 모델 추적 원본 switchValue을 설정하여 서비스 또는 클라이언트의 구성 파일에 다음 코드를 추가하여 이 작업을 수행할 수 있습니다.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
</system.diagnostics>

추적 원본에 대한 자세한 내용은 추적 구성 항목의 추적 원본 섹션을 참조하세요.

활동 추적 및 전파

클라이언트와 ActivityTracing 서비스의 추적 원본에서 propagateActivity을(를) 활성화하고 true로 설정하면, 처리의 논리적 단위(작업) 내에서, 엔드포인트 내부의 활동(활동 전송을 통해) 및 다수의 엔드포인트에 걸친 활동(활동 ID 전파를 통해) 간의 추적 상관 관계를 제공합니다.

이러한 세 가지 메커니즘(활동, 전송 및 전파)은 서비스 추적 뷰어 도구를 사용하여 오류의 근본 원인을 보다 신속하게 찾는 데 도움이 될 수 있습니다. 자세한 내용은 상호 관련된 추적 보기 및 문제 해결을 위해 서비스 추적 뷰어 사용을 참조하세요.

사용자 정의 작업 추적을 만들어 ServiceModel에서 제공하는 추적을 확장할 수 있습니다. 사용자 정의 활동 추적을 사용하면 다음과 같은 추적 작업을 만들 수 있습니다.

  • 추적을 논리 작업 단위로 그룹화합니다.

  • 전송 및 전파를 통해 활동의 상관 관계를 지정합니다.

  • WCF 추적의 성능 비용(예: 로그 파일의 디스크 공간 비용)을 줄입니다.

사용자 정의 활동 추적에 대한 자세한 내용은 확장 추적 샘플을 참조하세요.

메시지 로깅

모든 WCF 애플리케이션의 클라이언트 및 서비스에서 메시지 로깅을 사용하도록 설정할 수 있습니다. 메시지 로깅을 사용하도록 설정하려면 클라이언트 또는 서비스에 다음 코드를 추가해야 합니다.

<configuration>
  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>
</configuration>

메시지가 기록될 때 추적 유형은 클라이언트 또는 서버에서 추적되는지 여부에 따라 달라집니다. 예를 들어 클라이언트로 전송되는 "추가" 메시지는 클라이언트의 "TransportWrite" 범주에서 추적되는 반면, 동일한 메시지는 서비스의 "TransportRead" 범주에서 추적됩니다.

클라이언트의 App.config 파일 또는 서비스의 Web.config 파일 섹션에 다음 코드를 System.Diagnostics 추가하여 추적 수신기를 구성합니다.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

메시지는 구성 파일에 지정된 대상 디렉터리에 XML 형식으로 기록됩니다.

비고

추적 파일은 처음에 로그 디렉터리를 만들지 않고 생성되지 않습니다. 디렉터리 C:\logs\가 있는지 확인하거나 수신기 구성에서 대체 로깅 디렉터리를 지정합니다. 자세한 내용은 이 문서의 끝에 있는 초기 설정 지침을 참조하세요.

메시지 로깅에 대한 자세한 내용은 메시지 로깅 구성 항목을 참조하세요.

샘플을 설정, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.

  2. 추적 및 메시지 로깅 샘플을 실행하기 전에 서비스에서 .svclog 파일을 쓸 디렉터리 C:\logs\를 만듭니다. 이 디렉터리의 이름은 기록할 추적 및 메시지의 경로로 구성 파일에 정의되며 변경할 수 있습니다. 사용자 네트워크 서비스에 로그 디렉터리에 대한 쓰기 권한을 부여합니다.

  3. 솔루션의 C#, C++또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.

  4. 단일 또는 컴퓨터 간 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.

참고하십시오