Tutorial: Cambiar el lugar donde My.Application.Log escribe información

Actualización: noviembre 2007

Puede utilizar los objetos My.Application.Log y My.Log para registrar información sobre eventos que se producen en la aplicación. Este tutorial muestra cómo reemplazar la configuración predeterminada y hacer que el objeto Log escriba en los otros agentes de escucha de registro.

Requisitos previos

El objeto Log puede escribir información en varios agentes de escucha del registro. Necesita determinar la configuración actual de los agentes de escucha de registro antes de cambiar las configuraciones. Para obtener más información, vea Tutorial: Determinar el lugar en el que My.Application.Log escribe la información.

Quizás desee revisar Cómo: Escribir información de eventos en un archivo de texto o Cómo: Escribir el registro de eventos de una aplicación.

Para agregar agentes de escucha

  1. Haga clic con el botón secundario del mouse (ratón) en app.config en el Explorador de soluciones y elija Abrir.

    O bien,

    Si no hay un archivo app.config:

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

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

    3. Haga clic en Agregar.

  2. Busque la sección <listeners>, bajo la sección <source> con el atributo de name "DefaultSource", en la sección <sources>. La sección <sources> está en la sección <system.diagnostics>, de la sección <configuration> de nivel superior.

  3. Agregue estos elementos a esa sección <listeners>.

    <!-- Uncomment to connect the application file log. -->
    <!-- <add name="FileLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="EventLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="Delimited" /> -->
    <!-- Uncomment to connect the XML log. -->
    <!-- <add name="XmlWriter" /> -->
    <!-- Uncomment to connect the console log. -->
    <!-- <add name="Console" /> -->
    
  4. Quite los comentarios de los agentes de escucha de registro que desea que reciban los mensajes de Log.

  5. Busque la sección <sharedListeners>, en la sección <system.diagnostics>, de la sección <configuration> de nivel superior.

  6. Agregue estos elementos a esa sección <sharedListeners>.

          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
                     Microsoft.VisualBasic, Version=8.0.0.0, 
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               initializeData="FileLogWriter" />
          <add name="EventLog"
               type="System.Diagnostics.EventLogTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="sample application"/>
          <add name="Delimited" 
               type="System.Diagnostics.DelimitedListTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleDelimitedFile.txt"
               delimiter=";;;"
               traceOutputOptions="DateTime" />
          <add name="XmlWriter"
               type="System.Diagnostics.XmlWriterTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleLogFile.xml" />
          <add name="Console"
               type="System.Diagnostics.ConsoleTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="true" />
    
  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"/>
              <!-- Uncomment to connect the application file log. -->
              <!-- <add name="FileLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="EventLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="Delimited" /> -->
              <!-- Uncomment to connect the XML log. -->
              <!-- <add name="XmlWriter" /> -->
              <!-- Uncomment to connect the console log. -->
              <!-- <add name="Console" /> -->
            </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"
               initializeData="FileLogWriter" />
          <add name="EventLog"
               type="System.Diagnostics.EventLogTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="sample application"/>
          <add name="Delimited" 
               type="System.Diagnostics.DelimitedListTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleDelimitedFile.txt"
               delimiter=";;;"
               traceOutputOptions="DateTime" />
          <add name="XmlWriter"
               type="System.Diagnostics.XmlWriterTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleLogFile.xml" />
          <add name="Console"
               type="System.Diagnostics.ConsoleTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="true" />
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    

Para reconfigurar un agente de escucha

  1. Busque el elemento <add> del agente de escucha de la sección <sharedListeners>.

  2. El atributo type proporciona el nombre del tipo de agente de escucha. Este tipo debe heredar de la clase TraceListener. Utilice un nombre de tipo seguro para garantizar que se utiliza el tipo correcto. Para obtener más información, vea la sección "Para hacer referencia a un tipo con nombre seguro" a continuación.

    Algunos tipos que puede utilizar son:

    Para obtener información sobre dónde escriben información otros tipos de agentes de escucha de registro, consulte la documentación del tipo.

  3. Cuando la aplicación crea el objeto de agente de escucha del registro, pasa el atributo initializeData como parámetro de constructor. El significado del atributo initializeData depende del agente de escucha de seguimiento.

  4. Después de crear el agente de escucha de registro, la aplicación establece las propiedades del agente de escucha. Los otros atributos definen estas propiedades en el elemento <add>. Para obtener más información sobre las propiedades de un agente de escucha determinado, consulte la documentación del tipo de ese agente de escucha.

Para hacer referencia a un tipo con nombre seguro

  1. Para asegurarse de que se utiliza el tipo correcto de agente de escucha de registro, asegúrese de que utiliza el nombre de tipo completo y el nombre de ensamblado seguro. La sintaxis de un tipo con nombre seguro es la siguiente:

    <type name>, <assembly name>, <version number>, <culture>, <strong name>

  2. En este ejemplo de código se muestra cómo determinar un nombre de tipo seguro para un tipo con nombre completo ("System.Diagnostics.FileLogTraceListener" en este caso).

    Public Sub DisplayStrongName()
        Dim t As Type = GetType(Logging.FileLogTraceListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    Éste es el resultado y se puede utilizar para hacer referencia únicamente a un tipo con nombre seguro, como en el procedimiento anterior "Para agregar agentes de escucha".

    Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Vea también

Tareas

Cómo: Escribir información de eventos en un archivo de texto

Cómo: Escribir el registro de eventos de una aplicación

Referencia

My.Application.Log (Objeto)

My.Log (Objeto)

TraceListener

Microsoft.VisualBasic.Logging.FileLogTraceListener

System.Diagnostics.EventLogTraceListener