Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 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'ta hata olayları oluşur. Bkz. Olay Günlüğü.
WCF izleme, System.Diagnostics üzerinde kurulmuştur. İ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. İz kaynağı System.ServiceModel en genel WCF iz kaynağıdır ve WCF iletişim yığınında, taşıma protokolüne girip çıkmaktan kullanıcı koduna girip çıkmaya kadar olan 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 iz yayılmadığı anlamına gelir.
Özel işlem çağırıcıları gibi WCF genişletilebilirlik noktalarını kullanıyorsanız, kendi izlerinizi oluşturmalı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.
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 olmak üzere uygulamanın yapılandırma dosyasını 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>
Uyarı
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'nde ş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, wcf hizmetlerinin yapılandırma ayarlarını grafik kullanıcı arabirimi kullanarak 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 logları oluşturur.
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 İzleri Tüketmek İçin Yapılandırma
Çalışma zamanında WCF, izleme verilerini dinleyicilere aktarır ve bu dinleyiciler verileri işler. WCF, System.Diagnostics için çıkış biçimlerinde 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 işlem, dinleyici için dosyanın adını initializeData olarak ayarlayarak 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 Nasıl yapılır: İzleme Dinleyicileri Oluşturma ve Başlatma ve Özel İzleyici Oluşturma bölümüne bakın.
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ığı açısından 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ı | Mevcut Değil | Mevcut Değil | Hiçbir iz salınmaz. | Mevcut Değil |
| Çok Önemli | "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: - BellekHatası (OutOfMemoryException) - ThreadAbortException (CLR herhangi bir ThreadAbortExceptionHandler'ı çağırır) - StackOverflowException (yakalanamaz) - ConfigurationErrorsException (Yapılandırma Hataları İstisnası) - SEHException - Uygulama başlatma hataları - Hızlı durma 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, sınırlama ayarlarının izin verdiğinden daha fazla istek alıyor. - Alıcı kuyruğu yapılandırılmış maksimum kapasiteye yaklaşıyor. - Zaman aşımı aşıldı. - Kimlik bilgileri reddedilir. |
Yöneticiler Uygulama geliştiricileri |
| Bilgi | "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 taşıma sistemine girer/çıkar. - Güvenlik belirteci alınır. - Yapılandırma ayarı okunur. |
Yöneticiler Uygulama geliştiricileri Ürün geliştiricileri. |
| Ağır dilli | "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. |
| Etkinlik İzleme | İş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 izleri. - Aktarımlar için izler. |
Tümü | |
| Tümü | Uygulama düzgün çalışabilir. Tüm olaylar yayılır. | Önceki tüm olaylar. | Tümü |
Ayrıntılı'dan Şiddetli'ye kadar olan düzeyler hiyerarşik olarak birbirinin üzerine yığılır; yani, her iz düzeyi Kapalı düzeyi dışında kendisinden üstteki tüm düzeyleri içerir. Örneğin, Uyarı düzeyinde bir dinleyici Kritik, Hata ve Uyarı izlerini alır. Tüm düzey, Detaylı'dan Kritik'e kadar olan ve Etkinlik izleme olaylarını içeren olayları kapsar.
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 switchValue değeri, etkinlik sınırları ve uç noktalardaki aktarımlar için izler oluşturan etkinlik izlemesini etkinleştirmek için kullanılır.
Uyarı
WCF'de belirli genişletilebilirlik özelliklerini kullandığınızda, etkinlik izlemesi etkinleştirildiğinde bir NullReferenceException alabilirsiniz. Bu sorunu çözmek için uygulamanızın yapılandırma dosyasını denetleyin ve izleme kaynağınızın özniteliğinin switchValue olarak activityTracingayarlanmadığı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 trueayarlayarak, 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 propagateActivity hem de 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 yayılımı için, ServiceModel ActivityTracing'ü ayarlamadığınızdan emin olun; fakat, ServiceModel propagateActivity özniteliği true olarak ayarlanmış olmalıdır.