¿Cómo activar el rastreo WCF?

160

Actualizar:

He estado tratando de activar el rastreo de WCF , pero aún no he tenido éxito ... A continuación se muestra mi última actualización.

¿Necesito un permiso para escribir en la ubicación a continuación?

  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="sdt"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "@\\myservername\folder1\traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

Estoy usando .NET Framework 3.5.

¿Cuál es la instrucción paso a paso para activar el seguimiento WCF con fines de depuración?

Nick Kahn
fuente

Respuestas:

230

La siguiente configuración tomada de MSDN se puede aplicar para habilitar el seguimiento en su servicio WCF .

<configuration>
  <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>
      <source name="myUserTraceSource"
              switchValue="Information, ActivityTracing">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
        <add name="xml"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="Error.svclog" />
    </sharedListeners>
  </system.diagnostics>
</configuration>

Para ver el archivo de registro, puede usar "C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe".

Si "SvcTraceViewer.exe" no está en su sistema, puede descargarlo del paquete "Microsoft Windows SDK para Windows 7 y .NET Framework 4" aquí:

Descarga del SDK de Windows

No tiene que instalar todo, solo la parte "Herramientas / Desarrollo .NET".

Cuando / si se bombardea durante la instalación con un error no sensorial, la respuesta de Petopas al error de instalación del SDK de Windows 7 resolvió mi problema.

Rohan West
fuente
18
¿Dónde veo que el archivo es generado Error.svclog?
Nick Kahn el
44
El archivo se generará en el mismo directorio que su ensamblado. Lo más probable es su directorio bin. Es posible que deba reciclar el proceso de trabajo si sus servicios están alojados en IIS.
Rohan West
9
Asegúrese de que su grupo de aplicaciones: identidad tiene permiso para escribir en esa carpeta. Por lo general, tengo una cuenta dedicada asignada a mi grupo de aplicaciones, de esta manera puedo otorgar acceso de lectura / escritura a ese usuario específico
Rohan West el
2
En el entorno de desarrollo, el archivo de error (initializeData = "Error.svclog") se almacena dentro del proyecto de solución. Cambiarlo a otras ubicaciones no funcionó.
LCJ
55
Pude conseguir que inicie sesión en una carpeta usando esto: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr
32

En su web.config (en el servidor) agregue

<system.diagnostics>
 <sources>
  <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
   <listeners>
    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\logs\Traces.svclog"/>
   </listeners>
  </source>
 </sources>
</system.diagnostics>
Christoph
fuente
1
Agregué así ya que no tengo acceso al desarrollador, excepto a la carpeta, initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>y no veo que el archivo se genere después de intentar acceder a los servicios.
Nick Kahn el
55
Por defecto está almacenado (puede ser capaz de cambiar esto). Puede forzar que se vacíe reciclando el grupo de aplicaciones. También asegúrese de que la identidad del grupo de aplicaciones pueda escribir en la ubicación.
Christoph
20

Vaya a su directorio de SDK de Microsoft. Un camino como este:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

Abra el Editor de configuración WCF (Editor de configuración de servicio de Microsoft) desde ese directorio:

SvcConfigEditor.exe

(otra opción para abrir esta herramienta es navegar en Visual Studio 2017 a "Herramientas"> "Editor de configuración del servicio WCF")

editor de configuración de wcf

Abra su archivo .config o cree uno nuevo usando el editor y navegue a Diagnósticos.

Allí puede hacer clic en "Habilitar registro de mensajes".

habilitar el registro de mensajes

Más información: https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

Con el visor de rastreo desde el mismo directorio puede abrir los archivos de registro de rastreo:

SvcTraceViewer.exe

También puede habilitar el seguimiento con WMI. Más información: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

juFo
fuente
2
muchas gracias por presentarme esta utilidad GUI. ¡hará que editar los archivos de configuración sea mucho más fácil!
simbionte
Awesome.it me ayuda mucho a entender el Tracelog.
ksrds
1

En lugar de agregar manualmente el bit de habilitación de rastreo en web.config, también puede intentar usar el editor de configuración WCF que viene con VS SDK para habilitar el rastreo

https://stackoverflow.com/a/16715631/2218571

CSharped
fuente