2010-10-17 88 views
2

因此,我現在正在自己的控制檯應用程序上運行我的WCF服務,但我也在IIS上擁有它們。 事情是我正在學習瞭解Service Trace Viewer Tool,當然,現在我想進一步,並寫我自己的消息,以包括在跟蹤文件。如何將我自己的消息發送到WCF跟蹤文件?

我付出應該很容易,但Trace.TraceInformation什麼都不寫入跟蹤文件。

我錯過了什麼?

這是我的配置是這樣的:

<configuration> 
<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing"> 
    <listeners> 
    <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
     <filter type="" /> 
    </add> 
    </listeners> 
    </source> 
    <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" 
    propagateActivity="true"> 
    <listeners> 
    <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
     <filter type="" /> 
    </add> 
    <add name="ServiceModelTraceListener"> 
     <filter type="" /> 
    </add> 
    </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add initializeData="C:\_sebastian\dev\gomez\WCFTraceTest\Server\App_tracelog.svclog" 
    type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    name="ServiceModelTraceListener" traceOutputOptions="Timestamp"> 
    <filter type="" /> 
    </add> 
    </sharedListeners> 
</system.diagnostics> 
<system.serviceModel> 
    <diagnostics> 
    <messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"/> 
    </diagnostics> 

回答

0

正如你可以看到here,你需要調用Flush在跟蹤它刷新到監聽器(或打開自動沖洗)。你在做那個嗎?

+0

nop,那不是......我試過同樣的運氣。 請注意,如果我調試我的服務,我只有一個名爲System.Diagnostics.DefaultTraceListener和ServiceModelListener的偵聽器不在那裏:(我如何加載它? – sebagomez 2010-10-17 20:20:57

0

添加您自己的源配置文件:

<source name="MyNameSpace.MySource" switchValue="Verbose,ActivityTracing" 
    propagateActivity="true"> 
    <listeners> 
    <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
     <filter type="" /> 
    </add> 
    <add name="ServiceModelTraceListener"> 
     <filter type="" /> 
    </add> 
    </listeners> 
    </source> 

這不是絕對必要的,但如果你使用SvcTraceViewer這將有助於就能獨立WCF從自己的痕跡痕跡。 接下來在你想要做的痕跡,從創建TraceSource實例的所有類:

class SomeClass{ 
    TraceSource _traceSource = new TraceSource("MyNamespace.MySource"); 

    void SomeMethod(){ 
    // Anywhere you want to trace you can call the TraceInformation(String) method: 
    _traceSource.TraceInformation("My trace message"); 
    } 
} 

您可以致電同花順每次跟蹤,但我不會推薦它。這些類經過優化,儘可能少地破壞代碼流,這意味着跟蹤可能不會立即顯示在文件中,因爲實際寫入文件發生在另一個線程上。但是,您可以在應用程序關閉期間調用Flush。

相關問題