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.