Extensión del seguimiento

El ejemplo ExtendingTracing muestra cómo ampliar la característica de seguimiento de Windows Communication Foundation (WCF) escribiendo seguimientos de actividad definidos por el usuario en el código del cliente y del servicio. La escritura de seguimientos de actividad definidos por el usuario permite al usuario crear actividades de seguimiento y seguimientos de grupo en unidades lógicas de trabajo. También es posible poner en correlación las actividades a través de las transferencias (dentro del mismo punto de conexión) y propagación (a través de los puntos de conexión). En este ejemplo, el seguimiento se habilita para el cliente y el servicio. Para obtener más información acerca de cómo habilitar el seguimiento en los archivos de configuración del cliente y del servicio, consulte Seguimiento y registro de mensajes.

Este ejemplo se basa en el ejemplo Introducción.

Nota

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

Propagación de seguimiento y de actividad

El seguimiento de actividad definido por el usuario permite al usuario crear sus propias actividades de seguimiento para agrupar seguimientos en unidades lógicas de trabajo, poner en correlación las actividades a través de transferencias y propagación, y disminuir el costo de rendimiento del seguimiento de WCF (por ejemplo, el costo del espacio en disco de un archivo de registro).

Adición de orígenes personalizados

Los seguimientos definidos por el usuario pueden añadirse tanto al código de cliente como de servicio. La adición de orígenes de seguimiento a los archivos de configuración del cliente o del servicio permite que los seguimientos personalizados se graben y se muestren en la herramienta Service Trace Viewer (SvcTraceViewer.exe). El código siguiente muestra cómo agregar un origen de seguimiento definido por el usuario denominado ServerCalculatorTraceSource al archivo de configuración.

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
        <source name="ServerCalculatorTraceSource" switchValue="Information,ActivityTracing">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
       <add initializeData="C:\logs\ServerTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" traceOutputOptions="Callstack">
            <filter type="" />
        </add>
    </sharedListeners>
    <trace autoflush="true" />
</system.diagnostics>
....

Correlación de actividades

Para poner en correlación directamente las actividades con los extremos, el atributo propagateActivity debe estar establecido en true en el origen de seguimiento System.ServiceModel. Además, para propagar los seguimientos sin pasar por las actividades de WCF, debe desactivarse el seguimiento de actividad de ServiceModel. Esto puede verse en el siguiente ejemplo de código:

Nota

Desactivar el seguimiento de actividades de ServiceModel no es igual que tener el nivel de seguimiento, indicado por la propiedad switchValue, definido en desactivado.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">

    ...

       </source>
    </sources>
</system.diagnostics>

Reducción del costo de rendimiento

Al establecer ActivityTracing en desactivado en el origen de seguimiento de System.ServiceModel, se genera un archivo de seguimiento que contiene solo seguimientos de actividad definidos por el usuario sin ninguno de los seguimientos de actividad de ServiceModel incluidos. Al excluir los seguimientos de actividad de ServiceModel, se obtiene un archivo de registro mucho más pequeño. Sin embargo, se pierde la oportunidad de poner en correlación los seguimientos de procesamiento de WCF.

Configuración, compilación y ejecución del ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Para ejecutar el ejemplo en una configuración con un solo equipo o con varios, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.

Consulte también