TraceSwitch y SourceSwitch - ¿cuál es la diferencia?
-
02-10-2019 - |
Pregunta
Así que probablemente me falta lo obvio aquí, pero lo que realmente es la diferencia entre la funcionalidad de la TraceSwitch y href="http://msdn.microsoft.com/en-us/library/system.diagnostics.sourceswitch.aspx" rel="noreferrer"> SourceSwitch
clases?
Ambos dan descripciones resumidas idénticas:
Proporciona un interruptor de control multinivel para el rastreo y la salida de depuración sin recompilar el código.
¿Son las secciones observaciones son extrañamente similares a los ojos. Podría alguien aclarar la diferencia en sus casos de uso y funcionalidad?
(Para completar, estoy usando interruptores con mi objeto TraceSource
, en lugar de la clase Trace
estática de edad, aunque lo dudo hace mucha diferencia.)
Solución
La diferencia es que las obras TraceSwitch
con mensajes Trace
mientras que SourceSwitch
trabaja con mensajes TraceSource
, que asocian los mensajes con su fuente. Así que con un SourceSwitch
puede configurar sus oyentes basado en el lugar donde los mensajes de seguimiento de procedencia.
Estoy de acuerdo la documentación no apunta directamente la diferencia, pero cavar a su alrededor en el relacionado TraceSource
documentación de la clase noreferrer y encontrará lo siguiente:
La clase se identifica por
TraceSource
el nombre de una fuente, típicamente el nombre de la aplicación. la traza los mensajes procedentes de un particular, componente puede ser iniciado por un en particular origen de seguimiento, permitiendo que todos los mensajes procedentes de ese componente a ser fácilmente identificados.
También hay un ejemplo que muestra cómo configurar un SourceSwitch
desactivar el seguimiento de un origen de seguimiento.
Otros consejos
El TraceSwitch (más) básicamente es un objeto TraceLevel para ser utilizado en combinación con la clase Trace estática.
El (más reciente) TraceSource combina un concepto TraceLevel con métodos de salida reales.
Como consecuencia de ello, en una gran aplicación que puede utilizar múltiples TraceSwitches a Preferencias Configurar traza para diferentes partes (interfaz gráfica de usuario, DAL) del programa, pero toda la producción será enviada a la misma TraceListener (s).
Con una TraceSource que puede tener canales de salida independientes. Y un poco mejor API.
Esta explicación de la diferencia entre TraceLevel y SourceLevel podría ayudar: