Tutorial: Filtrar el resultado de My.Application.Log
Actualización: noviembre 2007
Este tutorial explica cómo cambiar el filtrado del registro predeterminado para el objeto My.Application.Log, controlar qué información se pasa desde el objeto Log a los agentes de escucha y qué información escriben los agentes de escucha. Incluso puede cambiar el comportamiento de registro 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 escribe My.Application.Log tiene un nivel de gravedad asociado, que utilizan los mecanismos de filtrado para controlar el resultado del registro. Esta aplicación de ejemplo utiliza los métodos My.Application.Log para escribir algunos mensajes de registro con niveles de gravedad diferentes.
Para generar la aplicación de ejemplo
Abra un nuevo proyecto Aplicación para Windows de Visual Basic.
Agregue un botón denominado Button1 a Form1.
En el controlador de eventos Click para Button1, agregue el siguiente código:
' 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.
Presione Button1.
La aplicación escribe la información siguiente en el resultado de depuración y archivo de registro 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 resultados de 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.
Nota: |
---|
De manera predeterminada, la aplicación vacía el archivo de registro generado cuando se cierra la aplicación. |
En el ejemplo anterior, la segunda llamada al WriteEntry (Método, My.Application.Log y My.Log) y la llamada al método WriteException (Método, My.Application.Log y My.Log) producen resultados en el registro, mientras que la primera y última llamadas al método WriteEntry no lo hacen. Esto es así porque los niveles de seguridad de WriteEntry y WriteException son "Información" y "Error", ambos de los cuales son permitidos por el filtrado de registro predeterminado del objeto My.Application.Log. Sin embargo, se impide que los eventos con niveles de gravedad "Iniciar" y "Detener" produzcan resultados en el registro.
Filtrar todos los agentes de escucha de My.Application.Log
El objeto My.Application.Log utiliza un modificador 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 "Información".
Esta tabla muestra el nivel de gravedad requerido para que Registro escriba un mensaje en los agentes de escucha, dado un valor de DefaultSwitch determinada.
Valor de DefaultSwitch |
Gravedad del mensaje requerida para el resultado |
---|---|
Se permiten todos los mensajes. |
|
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 "Información" y el nivel de gravedad implícito para la sobrecarga WriteException es "Error". |
Esta tabla explica el resultado de registro del ejemplo anterior: con el valor predeterminado "Información" de DefaultSwitch, sólo la segunda llamada al método WriteEntry y la llamada al método WriteException producen resultados en el registro.
Para registrar sólo eventos de seguimiento de actividad
Haga clic con el botón secundario del mouse 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, elija Archivo de configuración de aplicaciones.
Haga clic en Agregar.
Busque la sección <switches>, que está en la sección <system.diagnostics>, que está en la sección <configuration> de nivel superior.
Busque el elemento que agrega DefaultSwitch a la colección de modificadores. Debería tener un aspecto parecido a este elemento:
<add name="DefaultSwitch" value="Information" />
Cambie el valor del atributo value a "ActivityTracing".
El contenido del archivo app.config debería 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>
Ejecutar la aplicación en el depurador.
Presione Button1.
La aplicación escribe la información siguiente en el resultado de depuración y archivo de registro de la aplicación:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Cierre la aplicación.
Vuelva a establecer el valor del atributo value en "Información".
Nota: |
---|
El valor del modificador DefaultSwitch sólo controla My.Application.Log. No cambia el comportamiento de las clases System.Diagnostics.Trace y System.Diagnostics.Debug de .NET Framework. |
Filtrado individual para los agentes de escucha de My.Application.Log
El ejemplo anterior muestra cómo cambiar el filtrado para todo el resultado de My.Application.Log. Este ejemplo explica cómo filtrar un agente de escucha de registro concreto. De manera predeterminada, una aplicación tiene dos agentes de escucha que escriben en el resultado de depuración de la aplicación y en el archivo de registro.
El archivo de configuración controla el comportamiento de los agentes de escucha de registro permitiendo que cada uno tenga un filtro, que es parecido a un modificador para My.Application.Log. Un agente de escucha de registro sólo generará un mensaje si lo permiten el modificador DefaultSwitch del registro y por el filtro del agente de escucha de registro en función de la gravedad del mensaje.
Este ejemplo 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 proceden del nuevo agente de escucha de depuración.
Para registrar sólo eventos de seguimiento de actividad
Haga clic con el botón secundario del mouse en app.config en el Explorador de soluciones y elija 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, elija Archivo de configuración de aplicaciones.
Haga clic en Agregar.
Haga clic con el botón secundario del mouse en app.config en el Explorador de soluciones. Elija Abrir.
Busque la sección <listeners>, dentro de la sección <source> que tiene el atributo name "DefaultSource", que está en la sección <sources>. La sección <sources> se encuentra bajo 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> dentro de la sección <system.diagnostics>, situada en la sección <configuration> de nivel superior.
Agregue este elemento a esa 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 debería 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>
Ejecutar la aplicación en el depurador.
Presione Button1.
La aplicación escribe la información siguiente 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 su 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 aplicación en Visual Basic.
Vea también
Tareas
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
Cómo: Escribir mensajes de registro