Compartir a través de


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

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

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

  3. 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)
    
  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 y archivo de registro de la aplicación.

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

Critical

Critical

Error

Critical O bien, 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 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

  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 seguimiento 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> dentro de la sección <system.diagnostics>, situada en la sección <configuration> de nivel superior.

  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

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

Conceptos

Modificadores de seguimiento

Registrar información de la aplicación