2014-04-23 63 views
2

我已經啓用了WCF服務中的跟蹤。這裏是System.Diagnostics程序部分: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部分顯示診斷:

<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:\ Tracing文件夾,並添加 「每個人」 具有完全權限。最後我發佈了,現在這兩個.svclog文件在文件夾中!不知道爲什麼我原來的配置沒有起作用。

+1

謝謝你幫助我,我錯過了第二部分的配置。對其他人來說,這應該放在標籤中 –

0

也有同樣的問題,我注意到app.config gui編輯器以西班牙語(我使用的VS語言環境)編寫switchValue="Advertencia,ActivityTracing"

我把它改成switchValue="Warning,ActivityTracing"和它的工作。日誌文件現在被創建。
在線搜索「的TraceLevel枚舉」查看可用的選項。