如何将我自己的消息发送到WCF跟踪文件?

如何将我自己的消息发送到WCF跟踪文件?,wcf,trace,Wcf,Trace,所以我现在在控制台应用程序上运行自己托管的WCF服务,但在IIS上也有。 问题是我正在学习理解,当然,现在我想更进一步,写我自己的消息,包括在跟踪文件中 我认为这应该很容易,但没有写入跟踪文件 我错过了什么 我的配置是这样的: <configuration> <system.diagnostics> <sources> <source name="System.ServiceModel.MessageLogging" switchValue=

所以我现在在控制台应用程序上运行自己托管的WCF服务,但在IIS上也有。 问题是我正在学习理解,当然,现在我想更进一步,写我自己的消息,包括在跟踪文件中

我认为这应该很容易,但没有写入跟踪文件

我错过了什么

我的配置是这样的:

<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>

如您所见,您需要在跟踪上调用Flush以将其刷新到侦听器(或启用自动刷新)。您正在这样做吗?

如您所见,您需要在跟踪上调用Flush以将其刷新到侦听器(或启用自动刷新)。您正在这样做吗?

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

   <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>

您可以在每次跟踪时调用Flush,但我不建议这样做。这些类经过优化以尽可能少地中断代码流,这意味着跟踪可能不会立即显示在文件中,因为对文件的实际写入发生在另一个线程上。但是,您可以在应用程序关闭期间调用Flush。

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

   <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>

您可以在每次跟踪时调用Flush,但我不建议这样做。这些类经过优化以尽可能少地中断代码流,这意味着跟踪可能不会立即显示在文件中,因为对文件的实际写入发生在另一个线程上。但是,您可以在应用程序关闭期间调用Flush。

不,不是这样。。。我试过,运气也一样。请注意,如果调试服务,则只有一个名为System.Diagnostics.DefaultTraceListener的侦听器,而ServiceModelListener不在其中:(我如何加载它?不,不是这样……我也尝试过,运气也一样。请注意,如果我调试我的服务,我只有一个名为System.Diagnostics.DefaultTraceListener的侦听器,ServiceModelListener不在那里:(我如何加载它?