İzlemeyi Yapılandırma
Bu konuda izlemeyi etkinleştirme, izleme kaynaklarını izlemeleri yaymak ve izleme düzeylerini ayarlamak için yapılandırma, etkinlik izleme ve yayma özelliklerini uçtan uca izleme bağıntısını destekleyecek şekilde ayarlama ve izleme dinleyicilerini izlemelere erişmek üzere ayarlama işlemleri açıklanmaktadır.
Üretim veya hata ayıklama ortamındaki izleme ayarları önerileri için bkz. İzleme ve İleti Günlüğü için Önerilen Ayarlar.
Önemli
Windows 8'de, uygulamanızın izleme günlükleri oluşturabilmesi için uygulamanızı yükseltilmiş (Yönetici istrator olarak çalıştır) çalıştırmanız gerekir.
İzlemeyi Etkinleştirme
Windows Communication Foundation (WCF), tanılama izleme için aşağıdaki verileri oluşturur:
İşlem çağrıları, kod özel durumları, uyarılar ve diğer önemli işleme olayları gibi uygulamaların tüm bileşenlerinde işlem kilometre taşları için izlemeler.
İzleme özelliği arızalandığında Windows hata olayları. Bkz. Olay Günlüğü.
WCF izleme, üzerine kurulmuştur System.Diagnostics. İzlemeyi kullanmak için, izleme kaynaklarını yapılandırma dosyasında veya kodda tanımlamanız gerekir. WCF, her WCF derlemesi için bir izleme kaynağı tanımlar. İzleme System.ServiceModel
kaynağı en genel WCF izleme kaynağıdır ve taşımayı girmek/bırakmaktan kullanıcı kodunu girmeye/bırakmaya kadar WCF iletişim yığınındaki işleme kilometre taşlarını kaydeder. İzleme kaynağı, System.ServiceModel.MessageLogging
sistem üzerinden akan tüm iletileri kaydeder.
İzleme varsayılan olarak etkin değildir. İzlemeyi etkinleştirmek için bir izleme dinleyicisi oluşturmanız ve yapılandırmada seçili izleme kaynağı için "Kapalı" dışında bir izleme düzeyi ayarlamanız gerekir; aksi takdirde, WCF herhangi bir izleme oluşturmaz. Dinleyici belirtmezseniz, izleme otomatik olarak devre dışı bırakılır. Dinleyici tanımlanmışsa ancak hiçbir düzey belirtilmemişse, düzey varsayılan olarak "Kapalı" olarak ayarlanır ve bu da hiçbir izlemenin yayıldığı anlamına gelir.
Özel işlem çağırıcıları gibi WCF genişletilebilirlik noktalarını kullanıyorsanız, kendi izlemelerinizi yaymalısınız. Bunun nedeni, bir genişletilebilirlik noktası uygularsanız, WCF'nin artık varsayılan yolda standart izlemeleri yayamamasıdır. İzlemeleri yayarak el ile izleme desteği uygulamazsanız, beklediğiniz izlemeleri göremeyebilirsiniz.
Uygulamanın yapılandırma dosyasını (Web'de barındırılan uygulamalar için Web.config veya şirket içinde barındırılan uygulamalar için Appname.exe.config) düzenleyerek izlemeyi yapılandırabilirsiniz. Aşağıda bu tür bir düzenleme örneği verilmiştir. Bu ayarlar hakkında daha fazla bilgi için "İzleme Dinleyicilerini İzlemeleri Kullanacak Şekilde Yapılandırma" bölümüne bakın.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Not
Visual Studio'da bir WCF hizmet projesinin yapılandırma dosyasını düzenlemek için uygulamanın yapılandırma dosyasına (Web'de barındırılan uygulamalar için Web.config veya Çözüm Gezgini'da şirket içinde barındırılan uygulama için Appname.exe.config) sağ tıklayın. Ardından WCF Yapılandırmasını Düzenle bağlam menüsü öğesini seçin. Bu, grafik kullanıcı arabirimi kullanarak WCF hizmetlerinin yapılandırma ayarlarını değiştirmenize olanak tanıyan Yapılandırma Düzenleyicisi Aracı'nı (SvcConfigEditor.exe) başlatır.
İzleme Kaynaklarını İzleme Yaymak için Yapılandırma
WCF, her derleme için bir izleme kaynağı tanımlar. Bir derleme içinde oluşturulan izlemelere, bu kaynak için tanımlanan dinleyiciler tarafından erişilir. Aşağıdaki izleme kaynakları tanımlanır:
System.ServiceModel: WCF işlemenin tüm aşamalarını günlüğe kaydeder, yapılandırma her okunduğu zaman, ileti aktarımda işlenir, güvenlik işleme, kullanıcı kodunda bir ileti gönderilir vb.
System.ServiceModel.MessageLogging: Sistem üzerinden akan tüm iletileri günlüğe kaydeder.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log: .NET Framework arabirimi için Ortak Günlük Dosya Sistemi'ne (CLFS) günlük kaydı.
System.Runtime.Serialization: Nesneler okunduğunda veya yazıldığında günlüğe kaydeder.
Cardspace.
Her izleme kaynağını, aşağıdaki yapılandırma örneğinde belirtildiği gibi aynı (paylaşılan) dinleyiciyi kullanacak şekilde yapılandırabilirsiniz.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
Ayrıca, kullanıcı kodu izlemelerini yaymak için aşağıdaki örnekte gösterildiği gibi kullanıcı tanımlı izleme kaynakları ekleyebilirsiniz.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Kullanıcı tanımlı izleme kaynakları oluşturma hakkında daha fazla bilgi için bkz . İzlemeyi Genişletme.
İzleme Dinleyicilerini İzlemeleri Kullanacak Şekilde Yapılandırma
Çalışma zamanında WCF, izleme verilerini dinleyicilere akışla iletir ve bu da verileri işler. WCF, için çıkış için System.Diagnosticskullandıkları biçime göre farklılık gösteren, önceden tanımlanmış birkaç dinleyici sağlar. Özel dinleyici türleri de ekleyebilirsiniz.
Kullanmak istediğiniz izleme dinleyicisinin adını ve türünü belirtmek için kullanabilirsiniz add
. Örnek yapılandırmamızda Dinleyici'yi traceListener
adlandırdık ve standart .NET Framework izleme dinleyicisini (System.Diagnostics.XmlWriterTraceListener
) kullanmak istediğimiz tür olarak ekledik. Her kaynak için istediğiniz sayıda izleme dinleyicisi ekleyebilirsiniz. İzleme dinleyicisi izlemeyi bir dosyaya yayarsa, yapılandırma dosyasında çıkış dosyasının konumunu ve adını belirtmeniz gerekir. Bu, söz konusu dinleyici için dosyanın adına ayarlanarak initializeData
yapılır. Bir dosya adı belirtmezseniz, kullanılan dinleyici türüne göre rastgele bir dosya adı oluşturulur. Kullanılırsa XmlWriterTraceListener , uzantısı olmayan bir dosya adı oluşturulur. Özel bir dinleyici uygularsanız, dosya adı dışında başlatma verilerini almak için de bu özniteliği kullanabilirsiniz. Örneğin, bu öznitelik için bir veritabanı tanımlayıcısı belirtebilirsiniz.
Bir özel izleme dinleyicisini, örneğin uzak bir veritabanına kablodaki izlemeleri gönderecek şekilde yapılandırabilirsiniz. Bir uygulama dağıtıcısı olarak, uzak makinedeki izleme günlüklerinde uygun erişim denetimini zorunlu tutmanız gerekir.
İzleme dinleyicilerini program aracılığıyla da yapılandırabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme Dinleyicileri Oluşturma ve Başlatma ve Özel traceListener Oluşturma.
Dikkat
System.Diagnostics.XmlWriterTraceListener
İş parçacığı güvenli olmadığından, izleme kaynağı izleme çıkışı yaparken kaynakları özel olarak kilitler. Birçok iş parçacığı bu dinleyiciyi kullanmak üzere yapılandırılmış bir izleme kaynağına izlemeler çıkardığında kaynak çekişmesi oluşabilir ve bu da önemli bir performans sorununa neden olur. Bu sorunu çözmek için iş parçacığı güvenli bir özel dinleyici uygulamanız gerekir.
İzleme Düzeyi
İzleme düzeyi, izleme kaynağının switchValue
ayarıyla denetlenmektedir. Kullanılabilir izleme düzeyleri aşağıdaki tabloda açıklanmıştır.
İzleme Düzeyi | İzlenen Olayların Doğası | İzlenen Olayların İçeriği | İzlenen Olaylar | Kullanıcı Hedefi |
---|---|---|---|---|
Kapalı | Yok | Yok | Hiçbir izleme kaydedilmez. | Yok |
Kritik | "Negatif" olaylar: Beklenmeyen bir işleme veya hata koşulu gösteren olaylar. | Aşağıdakileri içeren işlenmeyen özel durumlar günlüğe kaydedilir: -Outofmemoryexception - ThreadAbortException (CLR herhangi bir ThreadAbortExceptionHandler'ı çağırır) - StackOverflowException (yakalanamaz) -Configurationerrorsexception -Sehexception - Uygulama başlatma hataları - Yük devretme olayları - Sistem kilitleniyor - Zehirli iletiler: Uygulamanın başarısız olmasına neden olan ileti izlemeleri. |
Yöneticiler Uygulama geliştiricileri |
|
Hata | "Negatif" olaylar: Beklenmeyen bir işleme veya hata koşulu gösteren olaylar. | Beklenmeyen işlem gerçekleşti. Uygulama beklendiği gibi bir görev gerçekleştiremedi. Ancak, uygulama hala çalışır durumdadır. | Tüm özel durumlar günlüğe kaydedilir. | Yöneticiler Uygulama geliştiricileri |
Uyarı | "Negatif" olaylar: Beklenmeyen bir işleme veya hata koşulu gösteren olaylar. | Olası bir sorun oluştu veya oluşabilir, ancak uygulama yine de düzgün çalışır. Ancak düzgün çalışmaya devam etmeyebilir. | - Uygulama azaltma ayarlarının izin verdiği istekten daha fazla istek alıyor. - Alıcı kuyruğu yapılandırılan kapasite üst sınırına yakın. - Zaman aşımı aşıldı. - Kimlik bilgileri reddedilir. |
Yöneticiler Uygulama geliştiricileri |
Bilgiler | "Pozitif" olaylar: Başarılı kilometre taşlarını işaretleyen olaylar | Uygulamanın düzgün çalışıp çalışmadığına bakılmaksızın uygulama yürütmenin önemli ve başarılı kilometre taşları. | Genel olarak, sistem durumunu izlemek ve tanılamak, performansı ölçmek veya profil oluşturmak için yararlı iletiler oluşturulur. Bu bilgileri kapasite planlaması ve performans yönetimi için kullanabilirsiniz: - Kanallar oluşturulur. - Uç nokta dinleyicileri oluşturulur. - İleti aktarımı girer/bırakır. - Güvenlik belirteci alınır. - Yapılandırma ayarı okunur. |
Yöneticiler Uygulama geliştiricileri Ürün geliştiricileri. |
Ayrıntılı | "Pozitif" olaylar: Başarılı kilometre taşlarını işaretleyen olaylar. | Hem kullanıcı kodu hem de hizmet için alt düzey olaylar yayılır. | Genel olarak, hata ayıklama veya uygulama iyileştirme için bu düzeyi kullanabilirsiniz. - İleti üst bilgisi anlaşılmıştır. |
Yöneticiler Uygulama geliştiricileri Ürün geliştiricileri. |
ActivityTracing | İşleme etkinlikleri ve bileşenler arasında akış olayları. | Bu düzey yöneticilerin ve geliştiricilerin aynı uygulama etki alanındaki uygulamalarla bağıntı oluşturmasına olanak tanır: - Başlatma/durdurma gibi etkinlik sınırlarının izlemeleri. - Aktarımlar için izlemeler. |
Tümü | |
Tümü | Uygulama düzgün çalışabilir. Tüm olaylar yayılır. | Önceki tüm olaylar. | Tümünü |
Ayrıntılı'dan Kritik'e düzeyler birbirinin üzerine yığılır; diğer bir deyişle, her izleme düzeyi, Kapalı düzeyi dışındaki tüm düzeyleri içerir. Örneğin, Uyarı düzeyinde dinleyen bir dinleyici Kritik, Hata ve Uyarı izlemeleri alır. Tüm düzey, Ayrıntılı'dan Kritik'e ve Etkinlik izleme olaylarına kadar olan olayları içerir.
Dikkat
Bilgi, Ayrıntılı ve ActivityTracing düzeyleri çok fazla izleme oluşturur ve makinedeki tüm kullanılabilir kaynakları kullandıysanız ileti aktarım hızını olumsuz etkileyebilir.
Bağıntı için Etkinlik İzleme ve Yayma Yapılandırma
activityTracing
özniteliği için belirtilen değer, etkinlik sınırlarının ve uç noktaların switchValue
içindeki aktarımların izlemelerini yayan etkinlik izlemeyi etkinleştirmek için kullanılır.
Not
WCF'de belirli genişletilebilirlik özelliklerini kullandığınızda etkinlik izlemenin etkinleştirildiği bir zaman alabilirsiniz NullReferenceException . Bu sorunu çözmek için uygulamanızın yapılandırma dosyasını denetleyin ve izleme kaynağınızın özniteliğinin switchValue
olarak activityTracing
ayarlanmadığından emin olun.
özniteliği, propagateActivity
etkinliğin ileti değişimine katılan diğer uç noktalara yayılması gerekip gerekmediğini gösterir. Bu değeri olarak true
ayarlayarak, herhangi iki uç nokta tarafından oluşturulan izleme dosyalarını alabilir ve bir uç noktadaki izleme kümesinin başka bir uç noktadaki izleme kümesine nasıl aktığını gözlemleyebilirsiniz.
Etkinlik izleme ve yayma hakkında daha fazla bilgi için bkz . Yayma.
Hem hem de propagateActivity
ActivityTracing
Boole değerleri System.ServiceModel TraceSource'a uygulanır. Değer ActivityTracing
, WCF veya kullanıcı tanımlı olanlar da dahil olmak üzere tüm izleme kaynakları için de geçerlidir.
özniteliğini propagateActivity
kullanıcı tanımlı izleme kaynaklarıyla kullanamazsınız. Kullanıcı kodu etkinlik kimliği yayma için ServiceModel özniteliğinin olarak ayarlı olmasına rağmen ServiceModel'i ActivityTracing
propagateActivity
ayarlamadığınızdan true
emin olun.