Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo habilitar el seguimiento, configurar los orígenes de seguimiento para emitir seguimientos y establecer niveles de seguimiento, establecer el seguimiento de actividad y la propagación para admitir la correlación de seguimiento de un extremo a otro y establecer agentes de escucha de seguimiento para acceder a los seguimientos.
Para obtener recomendaciones de configuración de seguimiento en entornos de producción o depuración, consulte Configuración recomendada para seguimiento y registro de mensajes.
Importante
En Windows 8, debe ejecutar la aplicación con privilegios elevados (Ejecutar como administrador) para que la aplicación genere registros de seguimiento.
Habilitación del seguimiento
Windows Communication Foundation (WCF) genera los siguientes datos para el seguimiento de diagnóstico:
Realiza un seguimiento de los hitos del proceso en todos los componentes de las aplicaciones, como llamadas a operaciones, excepciones de código, advertencias y otros eventos de procesamiento significativos.
Eventos de error de Windows cuando la característica de seguimiento no funciona correctamente. Consulte Registro de eventos.
El seguimiento de WCF se basa en System.Diagnostics. Para usar el seguimiento, debe definir orígenes de seguimiento en el archivo de configuración o en el código. WCF define un origen de seguimiento para cada ensamblado WCF. El origen de seguimiento System.ServiceModel
es el origen de seguimiento de WCF más general y, en este, se graban los hitos de procesamiento de la pila de comunicación de WCF, desde el transporte de entrada y salida hasta el código de usuario de entrada y salida. El System.ServiceModel.MessageLogging
origen de seguimiento registra todos los mensajes que fluyen a través del sistema.
El seguimiento no está habilitado de forma predeterminada. Para activar el seguimiento, debe crear un agente de escucha de seguimiento y establecer un nivel de seguimiento distinto de "Desactivado" para el origen de seguimiento seleccionado en la configuración; De lo contrario, WCF no genera ningún seguimiento. Si no especifica un receptor, el seguimiento se deshabilita automáticamente. Si se define un agente de escucha, pero no se especifica ningún nivel, el nivel se establece en "Desactivado" de forma predeterminada, lo que significa que no se emite ningún seguimiento.
Si utiliza puntos de extensibilidad de WCF, como invocadores de operación personalizados, deberá emitir sus propios seguimientos. Esto se debe a que, si implementa un punto de extensibilidad, ya no se podrán emitir los seguimientos estándar en la ruta de acceso predeterminada de WCF. Si no implementa la compatibilidad con el seguimiento manual mediante la emisión de seguimientos, puede que no vea los seguimientos que espera.
Puede configurar el seguimiento editando el archivo de configuración de la aplicación, ya sea Web.config para aplicaciones hospedadas en web o Appname.exe.config para aplicaciones autohospedada. A continuación se muestra un ejemplo de este tipo de edición. Para obtener más información sobre esta configuración, vea la sección "Configuración de escuchas para que se consuman seguimientos".
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Nota:
Para editar el archivo de configuración de un proyecto de servicio WCF en Visual Studio, haga clic con el botón derecho en el archivo de configuración de la aplicación, ya sea Web.config para aplicaciones hospedadas en web o Appname.exe.config para la aplicación autohospedada en el Explorador de soluciones. A continuación, elija el elemento de menú contextual Editar configuración de WCF . Esto inicia la herramienta del Editor de configuración (SvcConfigEditor.exe) , que permite modificar las opciones de configuración de los servicios WCF mediante una interfaz gráfica de usuario.
Configurar fuentes de rastros para emitir rastros
WCF define un origen de seguimiento para cada ensamblado. Las escuchas definidas para ese origen tienen acceso a las trazas generadas dentro de un ensamblado. Se definen los orígenes de seguimiento siguientes:
System.ServiceModel: registra todas las fases del procesamiento de WCF, cada vez que se lee la configuración, se procesa un mensaje en transporte, procesamiento de seguridad, se envía un mensaje en el código de usuario, etc.
System.ServiceModel.MessageLogging: registra todos los mensajes que fluyen a través del sistema.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log: Registro para la interfaz .NET Framework al Sistema de archivos de registro comunes (CLFS).
System.Runtime.Serialization: registra cuando se leen o escriben objetos.
CardSpace.
Puede configurar cada origen de seguimiento para que use el mismo agente de escucha (compartido), como se indica en el ejemplo de configuración siguiente.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
Además, puede agregar orígenes de seguimiento definidos por el usuario, como se muestra en el ejemplo siguiente, para emitir seguimientos de código de usuario.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Para obtener más información sobre cómo crear orígenes de seguimiento definidos por el usuario, vea Extender el seguimiento.
Configurar las escuchas para consumir trazas
En tiempo de ejecución, los datos de seguimiento se envían desde WCF hasta las escuchas, donde estos se procesan. WCF proporciona varios agentes de escucha predefinidos para System.Diagnostics, que difieren en el formato que usan para la salida. También puede agregar tipos de agente de escucha personalizados.
Puede usar add
para especificar el nombre y el tipo del agente de escucha de seguimiento que desea usar. En nuestra configuración de ejemplo, hemos llamado traceListener
al agente de escucha y hemos agregado el agente de escucha de seguimiento estándar de .NET Framework (System.Diagnostics.XmlWriterTraceListener
) como el tipo que deseamos utilizar. Puede agregar cualquier número de agentes de escucha de seguimiento para cada origen. Si el agente de escucha de seguimiento emite el seguimiento a un archivo, debe especificar la ubicación y el nombre del archivo de salida en el archivo de configuración. Esto se hace estableciendo initializeData
en el nombre del archivo para esa escucha. Si no especifica un nombre de archivo, se genera un nombre de archivo aleatorio en función del tipo de agente de escucha usado. Si XmlWriterTraceListener se usa, se genera un nombre de archivo sin extensión. Si implementa un agente de escucha personalizado, también puede usar este atributo para recibir datos de inicialización distintos de un nombre de archivo. Por ejemplo, puede especificar un identificador de base de datos para este atributo.
Puede configurar un receptor de rastreo personalizado para enviar rastros por la red, por ejemplo, a una base de datos remota. Como implementador de aplicaciones, debe aplicar el control de acceso adecuado en los registros de seguimiento de la máquina remota.
También puede configurar un escuchador de seguimiento de manera programática. Para obtener más información, vea Cómo: crear e inicializar escuchadores de seguimiento y Creación de un TraceListener personalizado.
Precaución
Puesto que System.Diagnostics.XmlWriterTraceListener
no es seguro para subprocesos, el origen de seguimiento puede bloquear los recursos de forma exclusiva al generar trazas. Cuando muchos subprocesos generan trazas para un origen de seguimiento configurado para utilizar esta escucha, puede producirse una contención de recursos, que genera un problema de rendimiento importante. Para solucionar este problema, debería implementar una escucha personalizada que sea segura para subprocesos.
Nivel de seguimiento
El nivel de seguimiento se controla mediante la switchValue
configuración del origen de seguimiento. Los niveles de seguimiento disponibles se describen en la tabla siguiente.
Nivel de seguimiento | Naturaleza de los eventos con seguimiento | Contenido de los eventos con seguimiento | Eventos de seguimiento | Usuario objetivo |
---|---|---|---|---|
Apagado | No disponible | No disponible | No se emiten rastros. | No disponible |
Crítico | Eventos "Negativos": eventos que indican un procesamiento inesperado o una condición de error. | Las excepciones no controladas, incluidas las siguientes, se registran: - OutOfMemoryException. - ThreadAbortException (CLR invoca cualquier ThreadAbortExceptionHandler) - StackOverflowException (no se puede detectar) - ConfigurationErrorsException. - SEHException. - Errores de inicio de la aplicación - Eventos Failfast. - Bloqueos del sistema. - Mensajes dañinos: trazas de mensajes que hacen que la aplicación falle. |
Administradores Desarrolladores de aplicaciones |
|
Error | Eventos "Negativos": eventos que indican un procesamiento inesperado o una condición de error. | Se ha producido un procesamiento inesperado. La aplicación no pudo realizar una tarea según lo previsto. Sin embargo, la aplicación sigue en funcionamiento. | Todas las excepciones se registran. | Administradores Desarrolladores de aplicaciones |
Advertencia | Eventos "Negativos": eventos que indican un procesamiento inesperado o una condición de error. | Se ha producido un posible problema o puede producirse, pero la aplicación sigue funcionando correctamente. Sin embargo, puede que no siga funcionando correctamente. | - Casos en los que la aplicación está recibiendo más solicitudes de las que se permiten en sus valores de limitación de peticiones. - Casos en los que se está a punto de alcanzar la capacidad máxima configurada de la cola receptora. - Casos en los que se ha superado el tiempo de espera. - Se rechazan las credenciales. |
Administradores Desarrolladores de aplicaciones |
Información | Eventos "positivos": eventos que marcan hitos exitosos | Hitos importantes y exitosos alcanzados en la ejecución de la aplicación, independientemente de si la aplicación funcione correctamente o no. | En general, se generan mensajes útiles para supervisar y diagnosticar el estado del sistema, medir el rendimiento o la generación de perfiles. Puede usar esta información para planear la capacidad y la administración del rendimiento: - Se crean canales. - Casos en los que se crean escuchas de un punto de conexión. - Casos en los que se un mensaje entra o abandona el transporte. - Se recupera el token de seguridad. - Casos en los que se lee un valor de configuración. |
Administradores Desarrolladores de aplicaciones Desarrolladores de productos. |
Verboso | Eventos "positivos": eventos que marcan hitos exitosos. | Se emiten eventos de bajo nivel tanto para el código de usuario como para el mantenimiento. | En general, puede utilizar este nivel para depuración u optimización de la aplicación. - Casos en los que se comprendió el encabezado de un mensaje. |
Administradores Desarrolladores de aplicaciones Desarrolladores de productos. |
ActivityTracing | Flujo de eventos entre las actividades de procesamiento y los componentes. | Este nivel permite a los administradores y desarrolladores correlacionar las aplicaciones en el mismo dominio de aplicación: - Seguimientos de los límites de actividades, como el inicio o la detención de estas. - Seguimientos de transferencias. |
Todos | |
Todos | La aplicación puede funcionar correctamente. Se emiten todos los eventos. | Todos los eventos anteriores. | Todos |
Los niveles de Detallado a Crítico se apilan unos encima de otros, es decir, cada nivel de seguimiento incluye todos los niveles anteriores él excepto el nivel Off. Por ejemplo, una escucha que realiza escuchas en el nivel de advertencia recibe trazas de Crítico, Error, y Advertencia. Todos los niveles incluye los eventos de Detallado a Crítico y eventos de seguimiento de actividad.
Precaución
Los niveles Information, Verbose y ActivityTracing generan una gran cantidad de seguimientos, lo que puede afectar negativamente al rendimiento de los mensajes si ha usado todos los recursos disponibles en la máquina.
Configuración del rastreo y propagación de eventos para la correlación
El valor activityTracing
especificado para el atributo switchValue
se usa para habilitar el trazado de actividades, que genera trazas para los límites de actividad y transferencias dentro de los puntos de conexión.
Nota:
Al usar ciertas características de extensibilidad en WCF mientras la característica de seguimiento de actividades está habilitada, podría iniciarse una excepción NullReferenceException. Para corregir este problema, compruebe el archivo de configuración de la aplicación y asegúrese de que el switchValue
atributo del origen de seguimiento no esté establecido en activityTracing
.
El propagateActivity
atributo indica si la actividad se debe propagar a otros puntos de conexión que participan en el intercambio de mensajes. Estableciendo este valor en true
, puede coger archivos de seguimiento generados por dos puntos de conexión cualesquiera y observar cómo un conjunto de trazas en un punto de conexión fluyó a un conjunto de rastros de otro punto de conexión.
Para obtener más información sobre el seguimiento y la propagación de actividades, consulte Propagación.
Los valores booleanos propagateActivity
y ActivityTracing
se aplican al origen de seguimientos System.ServiceModel. El ActivityTracing
valor también se aplica a cualquier origen de seguimiento, incluidos WCF o definidos por el usuario.
No se puede usar el atributo propagateActivity
con orígenes de seguimiento definidos por el usuario. Para la propagación del identificador de actividad del código de usuario, asegúrese de no establecer ServiceModel ActivityTracing
, mientras sigue teniendo el atributo ServiceModel propagateActivity
establecido en true
.