Tutorial: Filtrar el resultado de My.Application.Log (Visual Basic)
En este tutorial se muestra cómo cambiar el filtrado del registro predeterminado para el objeto My.Application.Log
, para controlar qué información se pasa desde el objeto Log
a los agentes de escucha y qué información escriben estos. Puede cambiar el comportamiento del registro incluso después de generar la aplicación, porque la información de configuración se almacena en el archivo de configuración de la aplicación.
Introducción
Cada mensaje que My.Application.Log
escribe tiene un nivel de gravedad asociado, que los mecanismos de filtrado usan para controlar el resultado del registro. En esta aplicación de ejemplo se usan métodos My.Application.Log
para escribir varios mensajes de registro con distintos niveles de gravedad.
Para crear la aplicación de ejemplo
Abra un proyecto Aplicación Windows de Visual Basic nuevo.
Agregue un botón denominado Button1 a Form1.
En el controlador de eventos Click para Button1, agregue el código siguiente:
' 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)
Ejecute la aplicación en el depurador.
Pulse Button1.
La aplicación escribe la siguiente información en el archivo de registro y de salida de la depuración de la aplicación.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Cierre la aplicación.
Para obtener información sobre cómo ver la ventana de salida de la depuración de la aplicación, vea Resultados (Ventana). Para obtener información sobre la ubicación del archivo de registro de la aplicación, vea Tutorial: Determinar el lugar en el que My.Application.Log escribe la información (Visual Basic).
Nota
De manera predeterminada, la aplicación vacía el resultado del archivo de registro cuando la aplicación se cierra.
En el ejemplo anterior, la segunda llamada al método WriteEntry y la llamada al método WriteException producen una salida del registro, mientras que la primera y la última llamada al método
WriteEntry
no lo hacen. Esto se debe a que los niveles de gravedad deWriteEntry
yWriteException
son "Information" y "Error", que permite el filtrado de registro predeterminado del objetoMy.Application.Log
. En cambio, los eventos con niveles de gravedad "Start" y "Stop" no pueden generar el resultado del registro.
Filtrado para todos los agentes de escucha de My.Application.Log
El objeto My.Application.Log
usa un objeto SourceSwitch denominado DefaultSwitch
para controlar qué mensajes pasa de los métodos WriteEntry
y WriteException
a los agentes de escucha de registro. Puede configurar DefaultSwitch
en el archivo de configuración de la aplicación estableciendo su valor en uno de los valores de enumeración SourceLevels. De manera predeterminada, su valor es "Information".
En esta tabla se muestra el nivel de gravedad necesario para que el registro escriba un mensaje a los agentes de escucha, con un valor DefaultSwitch
determinado.
Valor DefaultSwitch | Gravedad del mensaje que se necesita para el resultado |
---|---|
Critical |
Critical |
Error |
Critical o Error |
Warning |
Critical , Error o Warning |
Information |
Critical , Error , Warning o Information |
Verbose |
Critical , Error , Warning , Information o Verbose |
ActivityTracing |
Start , Stop , Suspend , Resume o Transfer |
All |
Se permiten todos los mensajes. |
Off |
Se bloquean todos los mensajes. |
Nota
Los métodos WriteEntry
y WriteException
tienen una sobrecarga que no especifica un nivel de gravedad. El nivel de gravedad implícito para la sobrecarga WriteEntry
es "Information" y el nivel de gravedad implícito para la sobrecarga WriteException
es "Error".
En esta tabla se explica el resultado del registro que se muestra en el ejemplo anterior: con el valor DefaultSwitch
predeterminado de "Information", solo la segunda llamada al método WriteEntry
y la llamada al método WriteException
generan un resultado del registro.
Para registrar solo los eventos de seguimiento de la actividad
Haga clic con el botón derecho en app.config en el Explorador de soluciones y seleccione Abrir.
o bien
Si no hay ningún archivo app.config:
En el menú Proyecto , elija Agregar nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento , seleccione Archivo de configuración de aplicación.
Haga clic en Agregar.
Busque la sección
<switches>
, en la sección<system.diagnostics>
, que se encuentra en la sección de nivel superior<configuration>
.Busque el elemento que agrega
DefaultSwitch
a la colección de modificadores. Este elemento debe ser similar a este:<add name="DefaultSwitch" value="Information" />
Cambie el valor del atributo
value
a "ActivityTracing".El contenido del archivo app.config debe ser similar al código XML siguiente:
<?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>
Ejecute la aplicación en el depurador.
Pulse Button1.
La aplicación escribe la siguiente información en el archivo de registro y de salida de la depuración de la aplicación:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Cierre la aplicación.
Cambie el valor del atributo
value
de nuevo a "Information".Nota
La configuración del modificador
DefaultSwitch
solo controlaMy.Application.Log
. No cambia el comportamiento de las clases System.Diagnostics.Trace y System.Diagnostics.Debug de .NET.
Filtrado individual para los agentes de escucha de My.Application.Log
En el ejemplo anterior se muestra cómo cambiar el filtrado para todos los resultados de My.Application.Log
. En este ejemplo se muestra cómo filtrar un agente de escucha de registro individual. De manera predeterminada, una aplicación tiene dos agentes de escucha que escriben en el archivo de registro y de salida de la depuración de la aplicación.
El archivo de configuración controla el comportamiento de los agentes de escucha de registro permitiendo que cada uno tenga un filtro, que es similar a un modificador para My.Application.Log
. Un agente de escucha de registro generará un mensaje solo si la gravedad de este se permite por el filtro del agente de escucha de registro y del DefaultSwitch
del registro.
En este ejemplo se muestra cómo configurar el filtrado para un nuevo agente de escucha de depuración y agregarlo al objeto Log
. El agente de escucha de depuración predeterminado debe quitarse del objeto Log
, por lo que es evidente que los mensajes de depuración provienen del nuevo agente de escucha de depuración.
Para registrar solo los eventos de seguimiento de la actividad
Haga clic con el botón derecho en app.config en el Explorador de soluciones y seleccione Abrir.
o bien
Si no hay ningún archivo app.config:
En el menú Proyecto , elija Agregar nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento , seleccione Archivo de configuración de aplicación.
Haga clic en Agregar.
Haga clic con el botón derecho en app.config en el Explorador de soluciones. Pulse Abrir.
Busque la sección
<listeners>
, en la sección<source>
con el atributoname
"DefaultSource", que está en la sección<sources>
. La sección<sources>
está en la sección<system.diagnostics>
, en la sección de nivel superior<configuration>
.Agregue este elemento a la sección
<listeners>
:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Busque la sección
<sharedListeners>
, en la sección<system.diagnostics>
, en la sección de nivel superior<configuration>
.Agregue este elemento a dicha sección
<sharedListeners>
:<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>
El filtro EventTypeFilter toma uno de los valores de enumeración SourceLevels como su atributo
initializeData
.El contenido del archivo app.config debe ser similar al código XML siguiente:
<?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>
Ejecute la aplicación en el depurador.
Pulse Button1.
La aplicación escribe la siguiente información en el archivo de registro de la aplicación:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
La aplicación escribe menos información en el resultado de depuración de la aplicación porque el filtrado es más restrictivo.
Default Error 2 Error
Cierre la aplicación.
Para obtener más información sobre cómo cambiar la configuración del registro después de la implementación, vea Trabajar con registros de aplicaciones en Visual Basic.
Vea también
- Tutorial: Determinar el lugar en el que My.Application.Log escribe la información
- Tutorial: Cambiar el lugar donde My.Application.Log escribe información
- Tutorial: Crear agentes de escucha de registro personalizados
- Escribir mensajes de registro
- Modificadores de seguimiento
- Registrar información de la aplicación