Bagaimana menambahkan tracing (sederhana) di C #? [Tutup]


122

Saya ingin memperkenalkan beberapa penelusuran ke aplikasi C # yang saya tulis. Sayangnya, saya tidak pernah benar-benar mengingat cara kerjanya dan ingin tutorial dengan kualitas referensi untuk diperiksa sesekali. Ini harus mencakup:

  • App.config / Web.config yang akan ditambahkan untuk mendaftarkan TraceListeners
  • cara mengaturnya dalam aplikasi panggilan

Apakah Anda tahu tutorial uber yang harus kami tautkan?

EDIT: Glenn Slaven mengarahkan saya ke arah yang benar. Tambahkan ini ke App.config / Web.config Anda di dalam <configuration/>:

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

Ini akan menambahkan TextWriterTraceListeneryang akan menangkap semua yang Anda kirim dengan Trace.WriteLinedll.

EDIT: @DanEsparza menunjukkan bahwa Anda harus menggunakan Trace.TraceInformation, Trace.TraceWarningdan Trace.TraceErrorbukannya Trace.WriteLine, karena memungkinkan Anda untuk memformat pesan dengan cara yang sama seperti string.Format.

Tip: Jika Anda tidak menambahkan pendengar apa pun, Anda masih dapat melihat keluaran jejak dengan program SysInternals DebugView ( Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Saya sangat merekomendasikan menggunakan Trace.TraceInformationdan sejenisnya daripada WriteLine. Anggota tersebut memungkinkan Anda untuk memformat pesan Anda seperti string.Format.
Dan Esparza

Jawaban:



5

Saya mengikuti sekitar 5 jawaban berbeda serta semua posting blog di atas dan masih mengalami masalah. Saya mencoba menambahkan pendengar ke beberapa kode yang ada yang menelusuri menggunakan TraceSource.TraceEvent(TraceEventType, Int32, String)metode di mana TraceSourceobjek itu diinisialisasi dengan string menjadikannya 'sumber bernama'. Bagi saya masalahnya bukanlah membuat kombinasi yang valid dari sumber dan elemen sakelar untuk menargetkan sumber ini. Berikut adalah contoh yang akan masuk ke file bernama tracelog.txt. Untuk kode berikut:

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

Saya berhasil masuk dengan konfigurasi diagnostik berikut:

  <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>

Potongan kode tidak berfungsi.
usefulBee

Maaf @usefulBee, ini tidak dimaksudkan sebagai cuplikan kode, melainkan secara otomatis ditandai sebagai kode. Ini adalah kode konfigurasi yang akan menjadi bagian dari App.config atau Web.config Anda, saya harap itu membantu.
Shaun

3

DotNetCoders memiliki artikel awal di atasnya: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50 , mereka berbicara tentang cara mengatur sakelar di file konfigurasi & cara menulis kode, tapi sudah cukup tua (2002). Ada artikel lain di CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx tetapi usianya sama. CodeGuru memiliki artikel lain tentang TraceListeners khusus: http://www.codeguru.com/columns/vb/article.php/c5611

Saya tidak dapat memikirkan artikel terbaru lainnya, semoga orang lain di sini memiliki sesuatu


Tautan pertama menuju ke 404.
Kcoder
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.