İzlenecek Yol: My.Application.Log Çıktısını Filtreleme (Visual Basic)
Bu kılavuzda nesne için varsayılan günlük filtrelemesinin My.Application.Log
nasıl değiştirileceği, nesneden Log
dinleyicilere hangi bilgilerin geçirildiğini ve dinleyiciler tarafından hangi bilgilerin yazılması denetleneceği gösterilmektedir. Yapılandırma bilgileri uygulamanın yapılandırma dosyasında depolandığından, uygulamayı derledikten sonra bile günlük davranışını değiştirebilirsiniz.
Kullanmaya Başlama
Yazan her ileti My.Application.Log
, filtreleme mekanizmalarının günlük çıkışını denetlemek için kullandığı ilişkili bir önem düzeyine sahiptir. Bu örnek uygulama, farklı önem derecelerine sahip birkaç günlük iletisi yazmak için yöntemler kullanır My.Application.Log
.
Örnek uygulamayı derlemek için
Yeni bir Visual Basic Windows Uygulaması projesi açın.
Form1'e Button1 adlı bir düğme ekleyin.
Button1 için olay işleyicisine Click aşağıdaki kodu ekleyin:
' Activity tracing information My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start) ' Tracing information My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information) ' Create an exception to log. Dim ex As New ApplicationException ' Exception information My.Application.Log.WriteException(ex) ' Activity tracing information My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
Uygulamayı hata ayıklayıcıda çalıştırın.
Düğme1'e basın.
Uygulama, uygulamanın hata ayıklama çıkışına ve günlük dosyasına aşağıdaki bilgileri yazar.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Uygulamayı kapatın.
Uygulamanın hata ayıklama çıkış penceresini görüntüleme hakkında bilgi için bkz . Çıkış Penceresi. Uygulamanın günlük dosyasının konumu hakkında bilgi için bkz . İzlenecek Yol: My.Application.Log'un Bilgileri Nereye Yazacağı Belirleniyor.
Not
Varsayılan olarak, uygulama kapatıldığında günlük dosyası çıkışını temizler.
Yukarıdaki örnekte, yöntemine WriteEntry yapılan ikinci çağrı ve yöntemine yapılan WriteException çağrı günlük çıkışı oluştururken, yönteme
WriteEntry
yapılan ilk ve son çağrılar üretmez. Bunun nedeni ve önem düzeylerininWriteEntry
"Bilgi" ve "Hata" olmasıdır ve her ikisi de nesnenin varsayılan günlük filtrelemesiMy.Application.Log
tarafından izin verilir.WriteException
Ancak, "Başlat" ve "Durdur" önem düzeylerine sahip olayların günlük çıkışı oluşturması engellenir.
Tüm My.Application.Log Dinleyicileri için Filtreleme
nesnesi, My.Application.Log
ve yöntemlerinden WriteEntry
günlük dinleyicilerine hangi iletileri geçirip geçireceini denetlemek için adlı DefaultSwitch
bir SourceSwitch ad kullanır.WriteException
Değerini numaralandırma değerlerinden birine SourceLevels ayarlayarak uygulamanın yapılandırma dosyasında yapılandırabilirsinizDefaultSwitch
. Varsayılan olarak değeri "Information" olur.
Bu tabloda, belirli DefaultSwitch
bir ayara göre Günlük'in dinleyicilere ileti yazması için gereken önem düzeyi gösterilir.
DefaultSwitch Değeri | Çıktı için ileti önem derecesi gerekiyor |
---|---|
Critical |
Critical |
Error |
Critical veya Error |
Warning |
Critical , Error veya Warning |
Information |
Critical , Error , Warning veya Information |
Verbose |
Critical , Error , Warning , Information veya Verbose |
ActivityTracing |
Start , Stop , Suspend , Resume veya Transfer |
All |
Tüm iletilere izin verilir. |
Off |
Tüm iletiler engellenir. |
Not
ve WriteException
yöntemlerinin WriteEntry
her birinin önem düzeyi belirtmeyen bir aşırı yüklemesi vardır. Aşırı yüklemenin WriteEntry
örtük önem düzeyi "Bilgi" ve aşırı yüklemenin örtük önem düzeyi WriteException
"Hata"dır.
Bu tabloda, önceki örnekte gösterilen günlük çıkışı açıklanmaktadır: varsayılan DefaultSwitch
"Bilgi" ayarıyla, yönteme WriteEntry
yapılan yalnızca ikinci çağrı ve yöntem çağrısı WriteException
günlük çıktısı oluşturur.
Yalnızca etkinlik izleme olaylarını günlüğe kaydetmek için
Çözüm Gezgini app.config öğesine sağ tıklayın ve Aç'ı seçin.
-veya-
App.config dosyası yoksa:
Proje menüsünde Yeni Öğe Ekle'yi seçin.
Yeni Öğe Ekle iletişim kutusunda Uygulama Yapılandırma Dosyası'nı seçin.
Ekle'yi tıklatın.
<switches>
En üst düzey<configuration>
bölümde yer alan<system.diagnostics>
bölümünde yer alan bölümü bulun.Anahtar koleksiyonuna ekleyen
DefaultSwitch
öğeyi bulun. Bu öğeye benzer görünmelidir:<add name="DefaultSwitch" value="Information" />
özniteliğinin
value
değerini "ActivityTracing" olarak değiştirin.app.config dosyasının içeriği aşağıdaki XML'ye benzer olmalıdır:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="ActivityTracing" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> </sharedListeners> </system.diagnostics> </configuration>
Uygulamayı hata ayıklayıcıda çalıştırın.
Düğme1'e basın.
Uygulama, uygulamanın hata ayıklama çıkışına ve günlük dosyasına aşağıdaki bilgileri yazar:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Uygulamayı kapatın.
Özniteliğin
value
değerini "Bilgi" olarak değiştirin.Not
Anahtar
DefaultSwitch
ayarı yalnızcaMy.Application.Log
öğesini denetler. .NET System.Diagnostics.Trace ve System.Diagnostics.Debug sınıfların davranışını değiştirmez.
My.Application.Log Dinleyicileri için Tek Tek Filtreleme
Önceki örnekte, tüm My.Application.Log
çıkışlar için filtrelemenin nasıl değiştireceği gösterilmektedir. Bu örnekte, tek bir günlük dinleyicisini filtreleme gösterilmektedir. Varsayılan olarak, bir uygulamanın hata ayıklama çıkışına ve günlük dosyasına yazan iki dinleyicisi vardır.
Yapılandırma dosyası, her birinin için bir anahtara My.Application.Log
benzer bir filtreye sahip olmasına izin vererek günlük dinleyicilerinin davranışını denetler. Günlük dinleyicisi, yalnızca hem günlüğün hem de günlük DefaultSwitch
dinleyicisinin filtresi tarafından iletinin önem derecesine izin verildiğinde bir ileti çıkışı oluşturur.
Bu örnekte, yeni bir hata ayıklama dinleyicisi için filtrelemenin nasıl yapılandırılıp nesneye nasıl ekleneceği gösterilmektedir Log
. Varsayılan hata ayıklama dinleyicisi nesneden Log
kaldırılmalıdır, bu nedenle hata ayıklama iletilerinin yeni hata ayıklama dinleyicisinden geldiği açıktır.
Yalnızca etkinlik izleme olaylarını günlüğe kaydetmek için
Çözüm Gezgini app.config öğesine sağ tıklayın ve Aç'ı seçin.
-veya-
App.config dosyası yoksa:
Proje menüsünde Yeni Öğe Ekle'yi seçin.
Yeni Öğe Ekle iletişim kutusunda Uygulama Yapılandırma Dosyası'nı seçin.
Ekle'yi tıklatın.
Çözüm Gezgini app.config öğesine sağ tıklayın. Aç'ı seçin.
<listeners>
bölümünde bölümün<source>
altında yer alan "DefaultSource" özniteliğine<sources>
sahipname
bölümünü bulun. Bölüm<sources>
, en üst düzey<configuration>
bölümdeki bölümün altındadır<system.diagnostics>
.Bu öğeyi
<listeners>
bölümüne ekleyin:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
<sharedListeners>
En üst düzey<configuration>
bölümdeki<system.diagnostics>
bölümünü bulun.Bu öğeyi bu
<sharedListeners>
bölüme ekleyin:<add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add>
Filtre, EventTypeFilter sabit listesi değerlerinden SourceLevels birini özniteliği olarak
initializeData
alır.app.config dosyasının içeriği aşağıdaki XML'ye benzer olmalıdır:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add> </sharedListeners> </system.diagnostics> </configuration>
Uygulamayı hata ayıklayıcıda çalıştırın.
Düğme1'e basın.
Uygulama, uygulamanın günlük dosyasına aşağıdaki bilgileri yazar:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
Uygulama, daha kısıtlayıcı filtreleme nedeniyle uygulamanın hata ayıklama çıkışına daha az bilgi yazar.
Default Error 2 Error
Uygulamayı kapatın.
Dağıtımdan sonra günlük ayarlarını değiştirme hakkında daha fazla bilgi için bkz . Uygulama Günlükleriyle Çalışma.
Ayrıca bkz.
- İzlenecek Yol: My.Application.Log Günlüğünün Bilgileri Nereye Yazdığını Belirleme
- İzlenecek Yol: My.Application.Log Günlüğünün Bilgileri Yazdığı Yeri Değiştirme
- İzlenecek Yol: Özel Günlük Dinleyicileri Oluşturma
- Nasıl Yapılır: Günlük İletileri Yazma
- İzleme Anahtarları
- Uygulamadan Günlüğe Bilgi Kaydetme