title: .NET Tracing: What is the "Default" listener?
body: <p>Every example of tracing in .NET people remove the "<code>Default</code>" listener:</p>
  
  <pre><code>&lt;configuration&gt;
    &lt;system.diagnostics&gt;
      &lt;sources&gt;
        &lt;source name="TraceSourceApp" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch"&gt;
          &lt;listeners&gt;
            &lt;add name="ConsoleListener"/&gt;
            &lt;add name="ETWListener"/&gt;
            &lt;remove name="Default"/&gt;
          &lt;/listeners&gt;
  </code></pre>
  
  <p>What is the <strong>Default</strong> listener, and why is it there by default?</p>
  
  <p>A Microsoft guy did <a href="http://blogs.msdn.com/b/peaceofmind/archive/2008/04/16/using-eventprovidertracelistener.aspx">benchmarks of the overhead with different listeners</a>:</p>
  
  <pre><code>Default                    |===============================14,196 ms=====/ /================&gt; 
  TextWriterTraceListener    |=========211 ms======&gt;
  EventProviderTraceListener |=&gt; 77ms
  </code></pre>
  
  <p>What is the <code>Default</code> trace listener, and why is it so slow? Is it <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx"><code>OutputDebugString</code></a>? Is <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx"><code>OutputDebugString</code></a> really <em>two orders of magnitude</em> slower than writing to a file?</p>
  
  <p><strong>Is</strong> there a .NET <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx"><code>TraceListener</code></a> that just uses <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx"><code>OutputDebugString</code></a>?</p>
  
  <p>What is the <em>default</em> trace listener, why is it so slow, why is it customarily removed, and if it's so bad why is it the default?</p>