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.
Not
Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.
.NET Framework sürüm 2.0'daki yeni özelliklerden biri gelişmiş bir izleme sistemidir. Temel şirket değişmemiştir: izleme iletileri, verileri ilişkili bir çıkış ortamına raporlayan dinleyicilere anahtarlar aracılığıyla gönderilir. Sürüm 2.0 için birincil fark, izlemelerin sınıfın TraceSource örnekleri aracılığıyla başlatılabilmesidir. TraceSource gelişmiş bir izleme sistemi işlevi görecek şekilde tasarlanmıştır ve eski Trace ve Debug izleme sınıflarının statik yöntemleri yerine kullanılabilir. Tanıdık Trace ve Debug sınıflar hala var, ancak önerilen uygulama izleme için sınıfını TraceSource kullanmaktır.
Bu konuda, bir TraceSource uygulama yapılandırma dosyası ile birleştirilmiş kullanımı açıklanmaktadır. Bir yapılandırma dosyası kullanılmadan kullanarak TraceSource izleme yapmak mümkündür, ancak önerilmez. Yapılandırma dosyası olmadan izleme hakkında bilgi için bkz . Nasıl yapılır: İzleme Kaynakları Oluşturma ve Başlatma.
İzleme kaynağınızı oluşturmak ve başlatmak için
İzleme ile bir uygulamayı izlemenin ilk adımı bir izleme kaynağı oluşturmaktır. Çeşitli bileşenleri olan büyük projelerde, her bileşen için ayrı bir izleme kaynağı oluşturabilirsiniz. Önerilen uygulama, izleme kaynağı adı için uygulama adını kullanmaktır. Bu, farklı izlemeleri ayrı tutmayı kolaylaştırır. Aşağıdaki kod yeni bir izleme kaynağı oluşturur (
mySource)
ve olayları izleyen bir yöntem (Activity1
) çağırır. İzleme iletileri varsayılan izleme dinleyicisi tarafından yazılır.using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { Activity1(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } } }
İzleme dinleyicileri ve filtreleri oluşturmak ve başlatmak için
İlk yordamdaki kod, herhangi bir izleme dinleyicisini veya filtreyi program aracılığıyla tanımlamaz. Yalnızca kod izleme iletilerinin varsayılan izleme dinleyicisine yazılmasıyla sonuçlanıyor. Belirli izleme dinleyicilerini ve ilişkili filtrelerini yapılandırmak için, uygulamanızın adına karşılık gelen yapılandırma dosyasını düzenleyin. Bu dosyada, dinleyici ekleyebilir veya kaldırabilir, dinleyici özelliklerini ayarlayabilir ve filtreleyebilir veya dinleyicileri kaldırabilirsiniz. Aşağıdaki yapılandırma dosyası örneği, önceki yordamda oluşturulan izleme kaynağı için bir konsol izleme dinleyicisi ve bir metin yazıcı izleme dinleyicisinin nasıl başlatıldığını gösterir. İzleme dinleyicilerini yapılandırmaya ek olarak, yapılandırma dosyası her iki dinleyici için de filtreler oluşturur ve izleme kaynağı için bir kaynak anahtarı oluşturur. İzleme dinleyicileri eklemek için iki teknik gösterilir: dinleyiciyi doğrudan izleme kaynağına ekleme ve paylaşılan dinleyici koleksiyonuna bir dinleyici ekleme ve ardından izleme kaynağına ada göre ekleme. İki dinleyici için tanımlanan filtreler farklı kaynak düzeyleriyle başlatılır. Bu, bazı iletilerin iki dinleyiciden yalnızca biri tarafından yazılmasıyla sonuçlanıyor.
<configuration> <system.diagnostics> <sources> <source name="TraceSourceApp" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="console" type="System.Diagnostics.ConsoleTraceListener"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/> </add> <add name="myListener"/> <remove name="Default"/> </listeners> </source> </sources> <switches> <add name="sourceSwitch" value="Warning"/> </switches> <sharedListeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="myListener.log"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> </add> </sharedListeners> </system.diagnostics> </configuration>
Dinleyicinin izleme iletisi yazma düzeyini değiştirmek için
Yapılandırma dosyası, uygulama başlatıldığında izleme kaynağının ayarlarını başlatır. Bu ayarları değiştirmek için yapılandırma dosyasını değiştirmeniz ve uygulamayı yeniden başlatmanız veya yöntemini kullanarak Trace.Refresh uygulamayı program aracılığıyla yenilemeniz gerekir. Uygulama, kullanıcı tarafından belirtilen ayarları geçersiz kılmak için yapılandırma dosyası tarafından ayarlanan özellikleri dinamik olarak değiştirebilir. Örneğin, geçerli yapılandırma ayarlarından bağımsız olarak kritik iletilerin her zaman bir metin dosyasına gönderildiğinden emin olmak isteyebilirsiniz.
using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { Activity1(); // Change the event type for which tracing occurs. // The console trace listener must be specified // in the configuration file. First, save the original // settings from the configuration file. EventTypeFilter configFilter = (EventTypeFilter)mySource.Listeners["console"].Filter; // Then create a new event type filter that ensures // critical messages will be written. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Critical); Activity2(); // Allow the trace source to send messages to listeners // for all event types. This statement will override // any settings in the configuration file. mySource.Switch.Level = SourceLevels.All; // Restore the original filter settings. mySource.Listeners["console"].Filter = configFilter; Activity3(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } static void Activity2() { mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } static void Activity3() { mySource.TraceEvent(TraceEventType.Error, 4, "Error message."); mySource.TraceInformation("Informational message."); } } }