2014-04-23 4 views
2

WCF 서비스에서 추적을 사용하도록 설정했습니다. 여기 WCF 추적이 파일에 쓰지 않습니까?

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true"/> 
    <sources> 
     <source name="System.ServiceModel" switchValue="All" propagateActivity="true"> 
     <listeners> 
      <add name="xmlTraceListener" /> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging" switchValue="All"> 
     <listeners> 
      <add name="xmlTraceListener" />    
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xmlTraceListener" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="C:\KryptonTracing\Traces.svclog" /> 
    </sharedListeners> 
    </system.diagnostics> 

단지는 system.serviceModel 섹션 보여주는 진단이다 : 다음은 열고 System.Diagnostics 섹션은

<diagnostics wmiProviderEnabled="true"> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="true" 
     maxMessagesToLog="3000" 
    /> 
</diagnostics> 

나는이에 Windows 이벤트 뷰어의 정보 이벤트를 볼 수있는 서비스를 게시 할 때 다음을 말하는 서버 :

메시지 로깅이 설정되었습니다. 민감한 정보는 이며 메시지에 암호화되어 있어도 명확하게 기록됩니다 : 예문, 메시지 본문.

서버의 C : \ KryptonTracing 폴더로 이동하면 Traces.svclog가 생성되지 않습니다. 나는 IIS에 갔고이 WCF 서비스가 실행 중이고 그 아이디가 폴더에 대한 완전한 제어권을 받으면서 여전히 풀 아무것도없는 앱 풀 아이디를 보았다. 아무리해도 Traces.svclog를 만들 수있는 권한이 없습니다. 참고로,이 서비스는 맞춤 인증을 사용하는 wsHttpBinding (SSL)이지만 중요하지 않습니다.

나는 everything in this post을 사용해 보았습니다. 도와주세요.

+0

' '아래에''가있는 이유는 무엇입니까? 오타입니까? 루트 태그' '아래에 있어야합니다. – pepo

+0

죄송합니다. 오타였습니다. 게시물을 편집했습니다. – BBauer42

+0

WCF 서비스가 올바르게 작동합니까? 요청이 WCF에 기록되지 않을 수도 있습니다. 귀하의 구성에 문제가없는 것은 아닙니다. – pepo

답변

3

WCF 구성 편집기를 사용하여 web.config에 추적을 추가했습니다. 그것은 내 web.config에서이 두 섹션을 생성했습니다.

<configuration> 
    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelMessageLoggingListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
     <source propagateActivity="true" name="System.ServiceModel" switchValue="Warning,ActivityTracing"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="C:\Tracing\Krypton_Web_messages.svclog" 
      type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
      name="ServiceModelMessageLoggingListener" 
      traceOutputOptions="Timestamp"> 
     <filter type="" /> 
     </add> 
     <add initializeData="C:\Tracing\Krypton_Web_tracelog.svclog" 
      type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
      name="ServiceModelTraceListener" 
      traceOutputOptions="Timestamp"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    <trace autoflush="true" /> 
    </system.diagnostics> 

... 이것은 :

다음
<diagnostics> 
    <messageLogging logEntireMessage="true" logMalformedMessages="true" 
    logMessagesAtTransportLevel="true" /> 
</diagnostics> 

, 게시하기 전에 내가 가서 C를 생성 : 폴더를 추적 \ 전체 권한을 "모두"를 추가했다. 마지막으로 나는 지금 2 개의 .svclog 파일이 폴더에 있음을 발표하고 !!!! 내 원래 구성이 시작되지 않은 이유를 모르겠습니다.

+1

당신이 나를 도와 줘서 고마워, 내가 설정의 두 번째 부분을 놓치고 있었다. 다른 사람들에게만이 태그를 태그 안에 넣어야합니다. –

0

동일한 문제가 발생하여 app.config gui 편집기가 스페인어 (사용하는 VS 로캘)로 switchValue="Advertencia,ActivityTracing"을 쓰고있는 것으로 나타났습니다.

switchValue="Warning,ActivityTracing"으로 변경되어 작동했습니다. 이제 로그 파일이 생성됩니다.
온라인에서 'TraceLevel Enumeration'을 검색하여 사용 가능한 옵션을 확인하십시오.

관련 문제