.net trace etw

Rastreo.NET: ¿Qué es el oyente "predeterminado"?



trace etw (1)

No queda claro en la publicación del blog cómo se ejecutó el código, pero el DefaultTraceListener se documenta así:

De forma predeterminada, los métodos Write y WriteLine emiten el mensaje a la función Win32 OutputDebugString y al método Debugger.Log. Para obtener información sobre la función OutputDebugString, consulte el Platform SDK o MSDN.

Así que si Debugger.Log está imprimiendo en realidad en una ventana de la interfaz de usuario (y posiblemente lo esté desplazando, etc.) puedo ver que eso causa una gran cantidad de desaceleración.

Todos los ejemplos de seguimiento en .NET eliminan la escucha " Default ":

<configuration> <system.diagnostics> <sources> <source name="TraceSourceApp" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="ConsoleListener"/> <add name="ETWListener"/> <remove name="Default"/> </listeners>

¿Qué es el oyente predeterminado y por qué está allí de forma predeterminada?

Un tipo de Microsoft hizo puntos de referencia de la sobrecarga con diferentes oyentes :

Default |===============================14,196 ms=====/ /================> TextWriterTraceListener |=========211 ms======> EventProviderTraceListener |=> 77ms

¿Qué es el escucha de seguimiento Default y por qué es tan lento? ¿Es OutputDebugString ? ¿Es OutputDebugString realmente dos órdenes de magnitud más lento que escribir en un archivo?

¿ Hay un .NET TraceListener que solo use OutputDebugString ?

¿Cuál es el oyente de rastreo predeterminado , por qué es tan lento, por qué se elimina habitualmente y, si es tan malo, por qué es el predeterminado?