Tanılama İzlemeleri

İzlemeler, uygulama yürütme sırasında oluşturulan belirli iletilerin yayımlanmasıdır. İzlemeyi kullanırken, gönderilen iletileri toplamak ve kaydetmek için bir mekanizmanız olmalıdır. İzleme iletileri dinleyiciler tarafından alınır. Dinleyicinin amacı, izleme iletilerini toplamak, depolamak ve yönlendirmektir. Dinleyiciler izleme çıkışını günlük, pencere veya metin dosyası gibi uygun bir hedefe yönlendirir.

bu tür dinleyicilerden biri olan DefaultTraceListener, izleme etkinleştirildiğinde otomatik olarak oluşturulur ve başlatılır. İzleme çıkışının ek kaynaklara yönlendirilmesi için ek izleme dinleyicileri oluşturup başlatmanız gerekir. Oluşturduğunuz dinleyicileri ihtiyaçlarınıza uygun olmalıdır. Örneğin, tüm izleme çıktılarının metin kaydını isteyebilirsiniz. Bu durumda, tüm çıktı yazdı etkinleştirildiğinde yeni bir metin dosyası için bir dinleyici oluşturun. Diğer yandan, yalnızca uygulama yürütme sırasında çıkış görüntülemek isteyebilirsiniz. Bu durumda, tüm çıkış için bir konsol penceresi yönlendirilmiş bir dinleyici oluşturabilirsiniz. izleme EventLogTraceListener çıkışını bir olay günlüğüne yönlendirebilir ve izleme çıkışını TextWriterTraceListener bir akışa yazabilir.

İzlemeyi Etkinleştirme

İşlem işleme sırasında izlemeleri etkinleştirmek için uygulamanızın yapılandırma dosyasını düzenlemeniz gerekir. Aşağıda bir örnek verilmiştir.

<configuration>  
<system.diagnostics>  
     <sources>  
          <source name="System.Transactions" switchValue="Warning">  
               <listeners>  
                    <add name="tx"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData= "tx.log" />  
               </listeners>  
          </source>  
     </sources>  
</system.diagnostics>  
</configuration>  

System.Transactions izlemeleri "System.Transactions" adlı kaynağa yazılır. Kullanmak istediğiniz izleme dinleyicisinin adını ve türünü belirtmek için kullanabilirsiniz add . Örnek yapılandırmamızda Dinleyiciye "tx" adını verdik ve standart .NET Framework izleme dinleyicisini (XmlWriterTraceListener) kullanmak istediğimiz tür olarak ekledik. Kullanım initializeData günlük dosyasının adı için bu dinleyici ayarlamak için. Buna ek olarak, bir basit dosya adı için tam yol yerine kullanabilirsiniz.

Her izleme iletisi türüne, önem derecesini belirtmek için bir düzey atanır. Uygulama etki alanının izleme düzeyi bir olay türünün düzeyine eşit veya daha düşükse, bu ileti oluşturulur. İzleme düzeyi, yapılandırma dosyasındaki switchValue ayar tarafından denetlenmektedir. Tanılama izleme iletileriyle ilişkili düzeyler aşağıdaki tabloda tanımlanmıştır.

İzleme Düzeyi Açıklama
Kritik Aşağıdaki gibi önemli hataları oluştu:

- Kullanıcı işlevselliğinde anında kayıplara neden olabilecek bir hata.
- Bir yöneticinin işlev kaybını önlemek için eylem gerçekleştirmesini gerektiren bir olay.
- Kod kilitleniyor.
- Bu izleme düzeyi, diğer kritik izlemeleri yorumlamak için yeterli bağlam da sağlayabilir. Bu işlemleri için ciddi bir arıza öndeki dizisini tanımasına yardımcı olabilir.
Hata Bir hata (örneğin, geçersiz yapılandırma veya ağ davranış gibi) kullanıcı işlevselliği kaybına neden.
Uyarı Bir koşul bulunduğunu daha sonra bir hata veya kritik hatası (başarısız veya bir sınır yaklaştığı Örneğin, ayırma) neden olabilir. Kullanıcı kodundaki hataların normal işlenmesi (örneğin, işlem durduruldu, zaman aşımları, kimlik doğrulaması başarısız oldu) bir uyarı da oluşturabilir.
Bilgiler İzleme ve tanılama sistem durumu, performans ölçüm veya profil oluşturma için faydalı iletileri üretilir. Bunlar, oluşturulan veya işlenen bir işlem, önemli bir sınırın aşılması veya önemli kaynakların ayrılması gibi işlem ve listeleme ömrü olaylarını içerebilir. Bir geliştirici sonra gibi bilgileri kapasite planlama ve performans yönetimi için kullanabilir.

İzleme Kodları

Aşağıdaki tabloda altyapı tarafından System.Transactions oluşturulan izleme kodları listelenmektedir. Tabloya izleme kodu tanımlayıcısı, EventType izlemenin numaralandırma düzeyi ve izleme için TraceRecord içinde yer alan ek veriler dahildir. Buna ek olarak, izlemenin ilgili izleme düzeyi de TraceRecord içinde depolanır.

TraceCode EventType TraceRecord'da ek veriler
TransactionCreated Bilgi TransactionTraceId
TransactionPromoted Bilgi Yerel TransactionTraceId, Dağıtılmış TransactionTraceId
EnlistmentCreated Bilgi TransactionTraceId, EnlistmentTraceId, EnlistmentType (dayanıklı/geçici), EnlistmentOptions
EnlistmentCallbackNegative Uyarı TransactionTraceId, EnlistmentTraceId,

Geri çağırma (forcerollback/iptal/nin şüpheli işlemi olmadığından)
TransactionRollbackCalled Uyarı TransactionTraceId
TransactionAborted Uyarı TransactionTraceId
TransactionInDoubt Uyarı TransactionTraceId
TransactionScopeCreated Bilgi TransactionScopeResult, aşağıdakiler olabilir:

- Yeni işlem.
- İşlem geçirildi.
- Bağımlı işlem geçirildi.
- Geçerli işlemi kullanma.
- İşlem yok.

yeni geçerli TransactionTraceId
TransactionScopeDisposed Bilgi Kapsamın "beklenen" geçerli işleminin TransactionTraceId değeri.
TransactionScopeIncomplete Uyarı Kapsamın "beklenen" geçerli işleminin TransactionTraceId değeri.
TransactionScopeNestedIncorrectly Uyarı Kapsamın "beklenen" geçerli işleminin TransactionTraceId değeri.
TransactionScopeCurrentTransactionChanged Uyarı Eski geçerli TransactionTraceId, diğer TransactionTraceId
TransactionScopeTimeout Uyarı Kapsamın "beklenen" geçerli işleminin TransactionTraceId değeri.
DependentCloneCreated Bilgi TransactionTraceId, oluşturulan bağımlı işlemin türü (RollbackIfNotComplete/BlockCommitUntilComplete)
DependentCloneComplete Bilgi TransactionTraceId
RecoveryComplete'in Bilgi Kaynak Yöneticisi GUID (değerinden tabanı)
Reenlist Bilgi Kaynak Yöneticisi GUID (değerinden tabanı)
TransactionSerialized Bilgi TransactionTraceId.
Transactionexception Hata Özel durum iletisi
InvalidOperationException Hata Özel durum iletisi
InternalError Kritik Özel durum iletisi
TransferEvent Bir işlem seri durumdan çıkarıldığında veya bir işlemden dağıtılmış bir System.Transactions işleme yükseltildiğinde, ExecutionContext'ten geçerli ActivityID ve dağıtılmış işlem kimliği yazılır.

DTC yönetilen koda geri çağırdığında, dağıtılmış işlem kimliği geri çağırma süresi boyunca ExecutionContext içinde ActivityID olarak ayarlanır.
ConfiguredDefaultTimeoutAdjusted Uyarı Ek veri yok
TransactionTimeout Uyarı Zaman aşımına uğradıktan sonra işlemin TransactionTraceId değeri.

Yukarıdaki ek veri öğelerinin her biri için XML şeması aşağıdaki biçime sahiptir.

TransactionTraceIdentifier

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

< CloneIdentifier >

the clone id number

</CloneIdentifier>

</TransactionTraceIdentifier>

EnlistmentTraceIdentifier

<EnlistmentTraceIdentifier>

<ResourceManagerId>

string form of guid

</ResourceManagerId>

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

<CloneIdentifier >

the clone id number

</CloneIdentifier>

<TransactionTraceIdentifier>

<EnlistmentIdentifier>

the enlistment id number

</EnlistmentIdentifier>

</EnlistmentTraceIdentifier>

Kaynak Yöneticisi tanımlayıcısı

<ResourceManagerId>

string form of guid

</ResourceManagerId>

İzleme için Güvenlik Sorunları

Yönetici olarak izlemeyi açtığınızda, hassas bilgiler varsayılan olarak genel olarak görüntülenebilir bir izleme günlüğüne yazılabilir. Olası güvenlik tehditlerini azaltmak için, izleme günlüğünü paylaşım ve dosya sistemi erişim izinleri tarafından denetlenen güvenli bir konumda depolamayı düşünmelisiniz.