Wskazówki: filtrowanie danych wyjściowych My.Application.Log (Visual Basic)
W tym przewodniku pokazano, jak zmienić domyślne filtrowanie dziennika dla My.Application.Log
obiektu, aby kontrolować, jakie informacje są przekazywane z Log
obiektu do odbiorników i jakie informacje są zapisywane przez odbiorniki. Zachowanie rejestrowania można zmienić nawet po utworzeniu aplikacji, ponieważ informacje o konfiguracji są przechowywane w pliku konfiguracji aplikacji.
Wprowadzenie
Każdy komunikat, który My.Application.Log
zapisuje, ma skojarzony poziom ważności, który mechanizm filtrowania służy do kontrolowania danych wyjściowych dziennika. Ta przykładowa aplikacja używa My.Application.Log
metod do zapisywania kilku komunikatów dziennika o różnych poziomach ważności.
Aby skompilować przykładową aplikację
Otwórz nowy projekt aplikacji systemu Windows w języku Visual Basic.
Dodaj przycisk o nazwie Button1 do formularza Form1.
W procedurze obsługi zdarzeń Click dla przycisku Button1 dodaj następujący kod:
' 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)
Uruchom aplikację w debugerze.
Naciśnij przycisk1.
Aplikacja zapisuje następujące informacje w pliku wyjściowym debugowania i pliku dziennika aplikacji.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Zamknij aplikację.
Aby uzyskać informacje na temat wyświetlania okna danych wyjściowych debugowania aplikacji, zobacz Okno danych wyjściowych. Aby uzyskać informacje na temat lokalizacji pliku dziennika aplikacji, zobacz Przewodnik: określanie miejsca zapisywania informacji o pliku My.Application.Log.
Uwaga
Domyślnie aplikacja opróżnia dane wyjściowe pliku dziennika po zamknięciu aplikacji.
W powyższym przykładzie drugie wywołanie WriteEntry metody i wywołanie WriteException metody generuje dane wyjściowe dziennika, podczas gdy pierwsze i ostatnie wywołania
WriteEntry
metody nie. Jest to spowodowane tym, że poziomyWriteEntry
ważności iWriteException
są "Informacje" i "Błąd", z których oba są dozwolone przezMy.Application.Log
domyślne filtrowanie dziennika obiektu. Jednak zdarzenia z poziomami ważności "Start" i "Stop" nie mogą tworzyć danych wyjściowych dziennika.
Filtrowanie dla wszystkich odbiorników My.Application.Log
Obiekt My.Application.Log
używa SourceSwitch nazwy DefaultSwitch
do kontrolowania, które komunikaty są przekazywane z WriteEntry
metod i WriteException
do odbiorników dziennika. Możesz skonfigurować DefaultSwitch
w pliku konfiguracji aplikacji, ustawiając jej wartość na jedną z SourceLevels wartości wyliczenia. Domyślnie jej wartość to "Informacje".
W tej tabeli przedstawiono poziom ważności wymagany dla dziennika w celu zapisania komunikatu do odbiorników, biorąc pod uwagę określone DefaultSwitch
ustawienie.
Wartość przełącznika domyślnego | Ważność komunikatu wymagana dla danych wyjściowych |
---|---|
Critical |
Critical |
Error |
Critical lub Error |
Warning |
Critical , Error lub Warning |
Information |
Critical , Error , lub Warning Information |
Verbose |
Critical , , Error , Warning , Information lub Verbose |
ActivityTracing |
Start , , Stop , Suspend , Resume lub Transfer |
All |
Wszystkie komunikaty są dozwolone. |
Off |
Wszystkie komunikaty są blokowane. |
Uwaga
Metody WriteEntry
i WriteException
mają przeciążenie, które nie określa poziomu ważności. Niejawny poziom WriteEntry
ważności przeciążenia to "Informacje", a niejawny poziom WriteException
ważności przeciążenia to "Błąd".
W tej tabeli wyjaśniono dane wyjściowe dziennika pokazane w poprzednim przykładzie: z domyślnym DefaultSwitch
ustawieniem "Information" tylko drugie wywołanie WriteEntry
metody i wywołanie WriteException
metody generuje dane wyjściowe dziennika.
Aby rejestrować tylko zdarzenia śledzenia aktywności
Kliknij prawym przyciskiem myszy plik app.config w Eksplorator rozwiązań i wybierz polecenie Otwórz.
— lub —
Jeśli nie ma pliku app.config:
W menu Project (Projekt) wybierz pozycję Add New Item (Dodaj nowy element).
W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik konfiguracji aplikacji.
Kliknij przycisk Dodaj.
Znajdź sekcję
<switches>
, która znajduje się w<system.diagnostics>
sekcji , która znajduje się w sekcji najwyższego poziomu<configuration>
.Znajdź element, który dodaje
DefaultSwitch
do kolekcji przełączników. Powinien wyglądać podobnie do tego elementu:<add name="DefaultSwitch" value="Information" />
Zmień wartość atrybutu
value
na "ActivityTracing".Zawartość pliku app.config powinna być podobna do następującego kodu XML:
<?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>
Uruchom aplikację w debugerze.
Naciśnij przycisk1.
Aplikacja zapisuje następujące informacje w pliku danych wyjściowych i dziennika debugowania aplikacji:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Zamknij aplikację.
Zmień wartość atrybutu
value
z powrotem na "Informacje".Uwaga
Ustawienie przełącznika
DefaultSwitch
kontroluje tylkoMy.Application.Log
wartość . Nie zmienia sposobu działania platformy .NET System.Diagnostics.Trace i System.Diagnostics.Debug klas.
Filtrowanie indywidualne dla odbiorników My.Application.Log
W poprzednim przykładzie pokazano, jak zmienić filtrowanie dla wszystkich My.Application.Log
danych wyjściowych. W tym przykładzie pokazano, jak filtrować pojedynczy odbiornik dziennika. Domyślnie aplikacja ma dwa odbiorniki zapisujące dane wyjściowe debugowania aplikacji i plik dziennika.
Plik konfiguracji kontroluje zachowanie odbiorników dziennika, zezwalając każdemu z nich na filtrowanie, które jest podobne do przełącznika dla My.Application.Log
programu . Odbiornik dziennika wyświetli komunikat tylko wtedy, gdy ważność komunikatu jest dozwolona zarówno przez filtr dziennika DefaultSwitch
, jak i odbiornika dziennika.
W tym przykładzie pokazano, jak skonfigurować filtrowanie dla nowego odbiornika debugowania i dodać go do Log
obiektu. Domyślny odbiornik debugowania powinien zostać usunięty z Log
obiektu, dlatego jest jasne, że komunikaty debugowania pochodzą z nowego odbiornika debugowania.
Aby rejestrować tylko zdarzenia śledzenia aktywności
Kliknij prawym przyciskiem myszy plik app.config w Eksplorator rozwiązań i wybierz polecenie Otwórz.
— lub —
Jeśli nie ma pliku app.config:
W menu Project (Projekt) wybierz pozycję Add New Item (Dodaj nowy element).
W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik konfiguracji aplikacji.
Kliknij przycisk Dodaj.
Kliknij prawym przyciskiem myszy plik app.config w Eksplorator rozwiązań. Wybierz pozycję Otwórz.
Znajdź sekcję
<listeners>
w<source>
sekcji z atrybutemname
"DefaultSource", który znajduje się w<sources>
sekcji . Sekcja<sources>
znajduje się<system.diagnostics>
w sekcji w sekcji najwyższego poziomu<configuration>
.Dodaj ten element do
<listeners>
sekcji:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Znajdź sekcję
<sharedListeners>
w<system.diagnostics>
sekcji w sekcji najwyższego poziomu<configuration>
.Dodaj ten element do tej
<sharedListeners>
sekcji:<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>
Filtr EventTypeFilter przyjmuje jedną z SourceLevels wartości wyliczenia jako
initializeData
atrybut.Zawartość pliku app.config powinna być podobna do następującego kodu XML:
<?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>
Uruchom aplikację w debugerze.
Naciśnij przycisk1.
Aplikacja zapisuje następujące informacje w pliku dziennika aplikacji:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
Aplikacja zapisuje mniej informacji do danych wyjściowych debugowania aplikacji z powodu bardziej restrykcyjnego filtrowania.
Default Error 2 Error
Zamknij aplikację.
Aby uzyskać więcej informacji na temat zmieniania ustawień dziennika po wdrożeniu, zobacz Praca z dziennikami aplikacji.
Zobacz też
- Przewodnik: ustalanie, gdzie My.Application.Log zapisuje informacje
- Przewodnik: zmienianie lokalizacji, w której My.Application.Log zapisuje informacje
- Przewodnik: tworzenie odbiorców dzienników niestandardowych
- Instrukcje: zapisywanie komunikatów dziennika
- Przełączniki śledzenia
- Rejestrowanie informacji z aplikacji