다음을 통해 공유


메시지 로그 보기

이 항목에서는 메시지 로그를 보는 방법에 대해 설명합니다.

서비스 추적 뷰어에서 메시지 로그 보기

메시지는 WCF에서 처리될 때 변환됩니다. 따라서 기록되는 메시지는 기록된 시점의 메시지 내용만 반영하며, 와이어의 콘텐츠는 반영되지 않습니다.

메시지 로깅의 출력은 메시지 전송 형식과 관계가 없으므로 메시지 로깅은 항상 디코딩된 메시지를 출력합니다. 메시지 로깅을 올바르게 구성한 경우 기록된 모든 메시지는 일반 텍스트여야 합니다. 예를 들어 기록된 메시지의 형식(일반 텍스트)은 이진 메시지 인코더 사용의 영향을 받지 않습니다.

XmlWriterTraceListener의 출력은 XML 조각 시퀀스를 포함하는 파일입니다. 파일이 유효한 XML 파일이 아님을 알고 있어야 합니다. 서비스 추적 뷰어 도구(SvcTraceViewer.exe)를 사용하여 메시지 로그 파일을 보는 것이 좋습니다. 이 도구를 사용하는 방법에 대한 자세한 내용은 서비스 추적 뷰어를 사용하여 상관 관계 추적 보기 및 문제 해결을 참조하세요.

서비스 추적 뷰어의 메시지는 메시지 탭에 나열됩니다. 오류의 심각도에 따라 처리 오류가 발생했거나 관련된 메시지는 노란색(경고 수준) 또는 빨간색(오류 수준)으로 강조 표시됩니다. 메시지를 두 번 클릭하면 처리 요청의 컨텍스트에서 메시지 추적이 표시됩니다.

비고

메시지에 헤더가 없으면 태그가 기록되지 않습니다 <header/> .

클라이언트, 릴레이 및 서비스에서 기록된 메시지 보기

사용자 환경에는 메시지를 릴레이로 보내는 클라이언트가 포함될 수 있으며, 이 클라이언트는 이후에 메시지를 서비스로 전달합니다. 세 위치 모두에 메시지 로깅을 사용하도록 설정하고 세 개의 메시지 로그를 모두 서비스 추적 뷰어 도구(SvcTraceViewer.exe) 에서 동시에 볼 때 메시지 로그 교환이 잘못 렌더링됩니다. 메시지 헤더와 CorrelationIdActivityId 메시지 헤더가 모든 송신-수신 쌍에 대해 고유하지 않기 때문입니다.

다음 방법 중 하나를 사용하여 이 문제를 해결할 수 있습니다.

  • 서비스 추적 뷰어 도구(SvcTraceViewer.exe)에서 세 개의 메시지 로그 중 두 개만 언제든지 볼 수 있습니다.

  • 서비스 추적 뷰어 도구(SvcTraceViewer.exe)에서 세 개의 로그를 모두 동시에 확인해야 하는 경우 새 Message 인스턴스를 만들어 릴레이 서비스를 수정할 수 있습니다. 이 인스턴스는 들어오는 메시지 본문과 ActivityIdAction 헤더를 제외한 모든 헤더의 복사본이어야 합니다. 다음 예제 코드에서는 이 작업을 수행하는 방법을 보여 줍니다.

Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());  
  
for (int i = 0; i < incomingMessage.Headers.Count; i++)  
{  
   if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||  
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))  
   {  
      continue;  
    }  
    outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);  
}  

부정확한 메시지 로깅 콘텐츠에 대한 예외 사례

다음 조건에서 기록되는 메시지는 와이어에 있는 8진수 스트림의 정확한 표현이 아닐 수 있습니다.

  • BasicHttpBinding의 경우 봉투 헤더는 /addressing/none 네임스페이스의 들어오는 메시지에 대해 기록됩니다.

  • 공백이 서로 맞지 않을 수 있습니다.

  • 들어오는 메시지의 경우 빈 요소를 다르게 나타낼 수 있습니다. 예를 들어, <태그></태그> 대신<태그/태그>를 사용합니다.

  • 알려진 PII 로깅을 기본적으로 사용하지 않거나 명시적으로 사용하지 않도록 설정한 후 enableLoggingKnownPii="true"로 설정합니다.

  • 인코딩은 UTF-8로 변환할 수 있습니다.

참고하십시오