Compartir a través de


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

En este tutorial se muestra cómo cambiar el filtrado de registros predeterminado para el My.Application.Log objeto para controlar qué información se pasa del Log objeto a los agentes de escucha y qué información escriben los agentes de escucha. Puede cambiar el comportamiento de registro incluso después de compilar la aplicación, ya que 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 la salida del registro. Esta aplicación de ejemplo usa My.Application.Log métodos para escribir varios mensajes de registro con distintos niveles de gravedad.

Para crear la aplicación de ejemplo

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

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

  3. En el Click controlador de eventos de 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)
    
  4. Ejecute la aplicación en el depurador.

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

  6. Cierre la aplicación.

    Para obtener información sobre cómo ver la ventana de salida de depuración de la aplicación, consulte Ventana de salida. Para obtener información sobre la ubicación del archivo de registro de la aplicación, consulte Tutorial: Determinar dónde escribe My.Application.Log información.

    Nota:

    De forma predeterminada, la aplicación vacía la salida del archivo de registro cuando se cierra la aplicación.

    En el ejemplo anterior, la segunda llamada al WriteEntry método y la llamada al WriteException método produce la salida del registro, mientras que la primera y la última llamada al WriteEntry método no lo hacen. Esto se debe a que los niveles de gravedad de WriteEntry y WriteException son "Información" y "Error", ambos permitidos por el filtrado de logs predeterminado del objeto My.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 SourceLevels valores de enumeración. De forma predeterminada, su valor es "Information".

En esta tabla se muestra el nivel de gravedad necesario para que el Log escriba un mensaje a los oyentes, dada una configuración determinada DefaultSwitch.

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, Warningo Information
Verbose Critical, Error, Warning, Informationo Verbose
ActivityTracing Start, Stop, Suspend, Resumeo Transfer
All Se permiten todos los mensajes.
Off Todos los mensajes están bloqueados.

Nota:

El método WriteEntry y el método WriteException cada uno tiene una sobrecarga que no especifica un nivel de gravedad. El nivel de gravedad implícito de la WriteEntry sobrecarga es "Información", y el nivel de gravedad implícito para la WriteException sobrecarga es "Error".

En esta tabla se explica la salida del log que se muestra en el ejemplo anterior: con la configuración predeterminada DefaultSwitch de "Information", solo la segunda llamada al método WriteEntry y la llamada al método WriteException producen salida de log.

Para registrar solo eventos de seguimiento de actividad

  1. Haga clic con el botón derecho en app.config en el Explorador de soluciones y seleccione Abrir.

    -o-

    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 la aplicación.

    3. Haga clic en Agregar.

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

  3. Busque el elemento que agrega DefaultSwitch a la colección de interruptores. Debe ser similar a este elemento:

    <add name="DefaultSwitch" value="Information" />

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

  5. El contenido del archivo app.config debe ser similar al siguiente 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>
    
  6. Ejecute la aplicación en el depurador.

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

  8. Cierre la aplicación.

  9. Cambie el valor del value atributo a "Information".

    Nota:

    La configuración del modificador DefaultSwitch solo controla My.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 de todas las My.Application.Log salidas. 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 eventos de seguimiento de actividad

  1. Haga clic con el botón derecho en app.config en el Explorador de soluciones y elija Abrir.

    -o-

    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 la aplicación.

    3. Haga clic en Agregar.

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

  3. Busque la <listeners> sección en la sección <source> que tiene el atributo name "DefaultSource", ubicada en la sección <sources>. La sección <sources> está en la sección <system.diagnostics>, en la sección de nivel superior <configuration>.

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

    <!-- 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>, dentro de la sección de nivel superior <configuration>.

  6. Agregue este elemento a esa <sharedListeners> sección:

    <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 EventTypeFilter filtro toma uno de los SourceLevels valores de enumeración como su initializeData atributo.

  7. El contenido del archivo app.config debe ser similar al siguiente 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>
    
  8. Ejecute la aplicación en el depurador.

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

  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, consulte Trabajar con registros de aplicaciones.

Consulte también