Как добавить (простую) трассировку в С#?

Я хочу представить некоторую трассировку для приложения С#, которое я пишу. К сожалению, я никогда не могу вспомнить, как это работает, и хотелось бы, чтобы время от времени мы проверяли справочные качества. Он должен включать:

  • Файл App.config/Web.config для добавления для регистрации TraceListeners
  • как настроить его в вызывающем приложении

Знаете ли вы учебник uber, с которым мы должны ссылаться?

РЕДАКТИРОВАТЬ: Гленн Славен указал мне в правильном направлении. Добавьте это в свой App.config/Web.config внутри <configuration/>:

<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"
             initializeData="trace.log" />
      </listeners>
    </trace>
</system.diagnostics>

Это добавит TextWriterTraceListener, который поймает все, что вы отправляете, с помощью Trace.WriteLine и т.д.

EDIT: @DanEsparza указала, что вместо Trace.WriteLine следует использовать Trace.TraceInformation, Trace.TraceWarning и Trace.TraceError, поскольку они позволяют вам форматировать сообщения так же, как string.Format.

Совет.. Если вы не добавляете слушателей, вы можете увидеть вывод трассировки с помощью программы SysInternals DebugView (Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

Ответ 2

Я следил за 5 различными ответами, а также всеми сообщениями в блоге выше и все еще имел проблемы. Я пытался добавить слушателя к существующему коду, который трассировался с использованием метода TraceSource.TraceEvent(TraceEventType, Int32, String), где объект TraceSource был инициализирован строкой, создающей его "named source". Для меня проблема заключалась не в создании правильной комбинации элементов источника и переключателя для целевого источника. Вот пример, который будет записываться в файл с именем tracelog.txt. Для следующего кода:

TraceSource source = new TraceSource("sourceName");
source.TraceEvent(TraceEventType.Verbose, 1, "Trace message");

Мне удалось успешно выполнить регистрацию со следующей конфигурацией диагностики:

  <system.diagnostics>
    <sources>
      <source name="sourceName" switchName="switchName">
        <listeners>
          <add
              name="textWriterTraceListener"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="tracelog.txt" />
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="switchName" value="Verbose" />
    </switches>
  </system.diagnostics>

Ответ 4

В DotNetCoders есть статья стартера: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50, они говорят о том, как настроить коммутаторы в файле конфигурации и как для написания кода, но он довольно старый (2002). Еще одна статья о CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx, но она того же возраста. CodeGuru имеет другую статью о пользовательских TraceListeners: http://www.codeguru.com/columns/vb/article.php/c5611

Я не могу придумать никаких новых статей, надеюсь, что у кого-то еще будет что-то