C # 'da (basit) izleme nasıl eklenir? [kapalı]


122

Yazmakta olduğum bir C # uygulamasına biraz izleme eklemek istiyorum. Ne yazık ki, nasıl çalıştığını asla hatırlayamıyorum ve ara sıra kontrol etmek için referans nitelikleri olan bir öğretici istiyorum. Şunları içermelidir:

  • TraceListeners'ı kaydetmek için eklenecek App.config / Web.config öğeleri
  • arayan uygulamada nasıl kurulur

Bağlanmamız gereken uber öğreticisini biliyor musunuz?

DÜZENLEME: Glenn Slaven beni doğru yönü gösterdi. Bunu içindeki App.config / Web.config dosyanıza ekleyin <configuration/>:

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

Bu, TextWriterTraceListenergönderdiğiniz her şeyi Trace.WriteLinevb. Yakalayacak bir ekleyecektir .

DÜZENLEME: @DanEsparza sen kullanması gerektiğini işaret Trace.TraceInformation, Trace.TraceWarningve Trace.TraceErroryerine Trace.WriteLineonlar biçimi mesajlarına aynı şekilde size izin verdiği, string.Format.

İpucu: Herhangi bir dinleyici eklemezseniz, izleme çıktısını SysInternals programı DebugView ( Dbgview.exe) ile görmeye devam edebilirsiniz : http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Trace.TraceInformationWriteLine yerine ve benzerlerini kullanmanızı şiddetle tavsiye ederim . Bu üyeler mesajlarınızı gibi biçimlendirmenize izin verir string.Format.
Dan Esparza

Yanıtlar:



5

Yukarıdaki tüm blog yazılarının yanı sıra yaklaşık 5 farklı cevabı takip ettim ve hala sorunlar yaşadım. Nesnenin 'adlandırılmış kaynak' yapan bir dizeyle başlatıldığı TraceSource.TraceEvent(TraceEventType, Int32, String)yöntemi kullanarak izleyen mevcut koda bir dinleyici eklemeye çalışıyordum TraceSource. Benim için sorun, bu kaynağı hedeflemek için kaynak ve anahtar öğelerinin geçerli bir kombinasyonunu oluşturmak değildi. İşte adlı bir dosyaya giriş yapacak bir örnek tracelog.txt. Aşağıdaki kod için:

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

Aşağıdaki teşhis yapılandırmasıyla başarıyla günlüğe kaydetmeyi başardım:

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

Kod parçacığı çalışmıyor.
usefulBee

Özür dilerim @usefulBee, bir kod parçası olması amaçlanmadı, otomatik olarak kod olarak işaretlendi. Bu, App.config veya Web.config'inizin bir parçası olacak yapılandırma kodudur, umarım yardımcı olur.
Shaun

3

DotNetCoders'da bir başlangıç ​​makalesi var: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50 , yapılandırma dosyasındaki anahtarların nasıl kurulacağı ve kodun nasıl yazılacağı hakkında konuşuyorlar, ama oldukça eskidir (2002). CodeProject ile ilgili başka bir makale var: http://www.codeproject.com/KB/trace/debugtreatise.aspx ama aynı yaşta. CodeGuru'nun özel TraceListeners hakkında başka bir makalesi var: http://www.codeguru.com/columns/vb/article.php/c5611

Daha yeni bir makale düşünemiyorum, umarım buradaki başka birinin bir şeyi olur


İlk bağlantı
404'e
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.