Як додати (просте) трасування в C #? [зачинено]


122

Я хочу познайомити додаток на C #, про який я пишу. На жаль, я ніколи не можу пригадати, як це працює, і я хотів би, щоб навчальний посібник з референтними якостями перевіряв кожен раз. Він повинен включати:

  • App.config / Web.config потрібно додати для реєстрації TraceListeners
  • як налаштувати його у виклику програми

Чи знаєте ви підручник з uber, до якого ми повинні посилатися?

EDIT: Гленн Славен вказав мені в правильному напрямку. Додайте це до свого 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.TraceInformation, Trace.TraceWarningа Trace.TraceErrorне Trace.WriteLine, оскільки вони дозволяють форматувати повідомлення так само, як і string.Format.

Порада: Якщо ви не додали жодних слухачів, ви все одно можете побачити вихід трасування за допомогою програми SysInternals DebugView ( Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Настійно рекомендую використовувати Trace.TraceInformationі подібне замість WriteLine. Ці учасники дозволяють вам форматувати такі повідомлення, як string.Format.
Dan Esparza

Відповіді:



5

Я дотримувався приблизно 5 різних відповідей, а також усіх публікацій в блозі вище, і все-таки виникли проблеми. Я намагався додати слухача до деякого існуючого коду, який відстежував за допомогою TraceSource.TraceEvent(TraceEventType, Int32, String)методу, коли TraceSourceоб'єкт був ініціалізований рядком, що робить його "названим джерелом". Для мене проблема полягала не в тому, щоб створити дійсну комбінацію джерела та елементів комутації для націлювання на це джерело. Ось приклад, який увійде у файл з назвою 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>

Фрагмент коду не працює.
корисноBee

Вибачення @usefulBee, це не мав бути фрагментом коду, він автоматично позначався як код. Це код конфігурації, який був би частиною вашого App.config або Web.config, я сподіваюся, що це допоможе.
Шон

3

Про це у 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/column/vb/article.php/c5611

Я не можу придумати жодних останніх статей, сподіваюся, у когось іншого тут щось з’явиться


Перше посилання збирається на 404.
Kcoder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.