Compartir a través de


Tutorial: Filtrar el resultado de My.Application.Log (Visual Basic)

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

  1. Abra un nuevo proyecto de aplicación para Windows de Visual Basic.

  2. Agregue un botón denominado Button1 a Form1.

  3. En el controlador de eventos Click de Button1, agregue el siguiente código:

  4. Ejecute la aplicación en el depurador.

  5. Presione Button1.

    La aplicación escribe la información siguiente en el resultado de depuración de la aplicación y en el archivo de registro.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Cierre la aplicación.

Para obtener información sobre cómo ver la Ventana de salida 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 (Visual Basic).

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 método WriteEntry y la llamada al método WriteException 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

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 "Información" y el nivel de gravedad implícito para la sobrecarga WriteException es "Error".

Esta tabla explica el registro generado mostrado en el ejemplo anterior: con un valor predeterminado de DefaultSwitch “información”, pero la segunda llamada al método WriteEntry y la llamada al método WriteException generan resultados de registro.

Para registrar sólo eventos de traza de actividad

  1. 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:

    1. En el menú Proyecto, elija Agregar nuevo elemento.

    2. En el cuadro de diálogo Agregar nuevo elemento, elija Archivo de configuración de aplicaciones.

    3. Haga clic en Agregar.

  2. Busque la sección <switches>, que está en la sección <system.diagnostics>, que está en la sección <configuration> de nivel superior.

  3. 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" />

  4. Cambie el valor del atributo value a "ActivityTracing".

  5. 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>
  6. Ejecutar la aplicación en el depurador.

  7. 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

  8. Cierre la aplicación.

  9. 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 traza de actividad

  1. 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:

    1. En el menú Proyecto, elija Agregar nuevo elemento.

    2. En el cuadro de diálogo Agregar nuevo elemento, elija Archivo de configuración de aplicaciones.

    3. Haga clic en Agregar.

  2. Haga clic con el botón secundario del mouse en app.config en el Explorador de soluciones. Elija Abrir.

  3. 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>.

  4. Agregue este elemento a la sección <listeners>:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
  5. Busque la sección <sharedListeners>, en la sección <system.diagnostics>, de la sección de nivel superior <configuration>.

  6. 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.

  7. 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>
  8. Ejecutar la aplicación en el depurador.

  9. 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

  10. 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 (Visual Basic)

Tutorial: Cambiar el lugar en el que My.Application.Log escribe la información (Visual Basic)

Tutorial: Crear agentes de escucha de registro personalizados (Visual Basic)

Cómo: Escribir mensajes de registro (Visual Basic)

Conceptos

Modificadores de seguimiento

Registrar información de la aplicación (Visual Basic)