2009-12-17 8 views
8

Me gustaría ser capaz de registrar la información de mensaje en una base de datos, y yo estoy tratando de decidir la mejor manera de hacer eso. ¿Es posible configurar los mecanismos de registro WCF para escribir en una base de datos en lugar de un archivo? Gracias.¿Cómo puedo habilitar el registro de WCF para que se escribe a una base de datos?

+1

Blog [Configuración de servicio WCF para utilizar Enterprise Library: aplicación de registro para registrar datos a la base de datos] (http://weblogs.asp.net/sukumarraju/archive/2011/11/07/configuring-wcf-service-to- utilizar-empresa-biblioteca-registro de aplicación a-log-datos-a-database.aspx) tiene instrucciones paso a paso, cómo configurar 'oyente base de datos de seguimiento' –

Respuesta

8

Es necesario tener dos cosas:

  • una configuración adecuada para permitir el rastreo .NET
  • una escucha de seguimiento para capturar los mensajes de seguimiento y almacenarlos en una base de datos

Para # 1:
Es necesario activar el seguimiento de WCF primera - que necesita una entrada en <system.serviceModel> que habilita el rastreo:

<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
      logEntireMessage="true" 
      logMalformedMessages="false" 
      logMessagesAtServiceLevel="true" 
      logMessagesAtTransportLevel="false" 
      maxMessagesToLog="300000" 
      maxSizeOfMessageToLog="200000"/> 
    </diagnostics> 
</system.serviceModel> 

A continuación, tendrá que configurar el seguimiento de .NET como tal:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" /> 
    </sharedListeners> 
</system.diagnostics> 

Aquí, en vez del WebTraceListener, u otros oyentes predefinidos, también puede conectar su propia base de datos de escucha de seguimiento orientado.

Para # 2:
Puede - por supuesto - escribir su propio SqlTraceListener - o puede utilizar una de las muchas soluciones ya hechas por ahí, por ejemplo this one here (descargar el código de Codeplex).

0

Si no necesita todo el mensaje SOAP, sugeriría usar log4net con la implementación personalizada IParameterInspector o IDispatchMessageInspector, porque en este caso puede escribir para registrar solo lo que necesita. De lo contrario, tome la solución de marc_s.

Cuestiones relacionadas