2008-09-26 6 views
7

내 웹 서비스에 로깅하는 이상적인 상황은 전달 된 매개 변수와 발생했을 수있는 오류가있는 모든 메소드 호출 (인증 및 데이터 액세스)을 기록하고 그 (것)들은 동일한 외침에 그 (것)들을 관련시키는 단일 ID로 연결했다. 또한 모든 매개 변수를 기록할지 또는 메서드 호출 만 기록할지 여부를 제어 할 수 있어야합니다. 나는 모든 로그인이 기록되었는지 또는 실패한 기록인지를 제어 할 수 있기를 원합니다. 다시 한번, 단일 요청에서 검색된 모든 정보는 id (guid 또는 기타)를 통해 함께 연결됩니다..Net 웹 서비스 로깅

이것은 이상적인 로깅 상황입니다. 누구든지이 모든 것을 구현하는 방법을 알고 맨체스터, 뉴 햄프셔 지역으로 이동하고자하는 경우 ...;)

심각하게, 내가 어떻게 webservice 요청을 오류에 대한 묶는 것에 대해 갈 줄 알았지 만, 또는 메서드 호출? 내 첫 시도는 비누 확장 (비누 또는 html)을 추가하려고 시도하고 확장 자체의 임의의 값을 서비스 자체에 전달하지 않기 위해 비누 확장을 사용하는 것을 포함합니다. 내 모든 시도는 성공하지 못했습니다.

현재 로깅 상황에서는 한 테이블에 대한 인증 로깅, 다른 테이블에 대한 메소드/비즈니스 호출 및 다른 테이블에 로깅하는 예외가 상호 연결없이 기록됩니다. 타임 스탬프는 유용하지만 때로는 효과적으로 디버깅 할만큼 신뢰할 수 없습니다. 우리는 현재 .Net 2.0에서 연말까지 3.5를 사용할 가능성이 있으므로 응답이 2.0 기능으로 유지되는 것이 더 도움이 될 것입니다.

누구나 아이디어가 있습니까?

+0

를 참조하면, 나는 또한에 "모든 권한"을 변경, 로그 폴더에 대한 권한을 업데이트했다. –

답변

11

사용 WCF 가능하고 구현 메시지 로깅 클로스의 솔루션에 추가 ... http://msdn.microsoft.com/en-us/library/ms730064.aspx

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
       <add name="messages" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="c:\logs\messages.svclog" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="false" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="3000" 
     maxSizeOfMessageToLog="2000"/> 
    </diagnostics> 
</system.serviceModel> 
+1

아마도 SvcTraceViewer 프로그램을 사용하여 출력을 분석하고 싶을 것입니다. (http://msdn.microsoft.com/en-us/library/ms732023.aspx#sectionSection1) – Henrik