Trabajar con registros de aplicación en Visual Basic
Los objetos My.Applicaton.Log y My.Log facilitan la escritura de información de registro y traza en archivos de registro.
Cómo se registran los mensajes
En primer lugar, se comprueba la gravedad del mensaje con la propiedad Switch de la propiedad TraceSource del registro. De manera predeterminada, sólo los mensajes de gravedad "Información" y superior se pasan a los agentes de escucha de traza, especificados en la colección TraceListener del registro. A continuación, cada agente de escucha compara la gravedad del mensaje con la propiedad Switch del agente de escucha. Si la gravedad del mensaje es bastante alta, el agente de escucha escribe el mensaje.
El diagrama siguiente muestra cómo un mensaje escrito en el método WriteEntry se pasa a los métodos WriteLine de los agentes de escucha de traza del registro:
Puede cambiar el comportamiento de los agentes de escucha de registro y de traza cambiando el archivo de configuración de la aplicación. El diagrama siguiente muestra la correspondencia entre las partes del registro y el archivo de configuración.
Dónde se registran los mensajes
Si el ensamblado no tiene un archivo de configuración, los objetos My.Application.Log y My.Log escriben en los resultados de depuración de la aplicación (a través de la clase DefaultTraceListener). Además, el objeto My.Application.Log escribe en el archivo de registro del ensamblado (a través de la clase FileLogTraceListener), mientras que el objeto My.Log escribe en el resultado de la página Web ASP.NET (a través de la clase WebPageTraceListener).
El resultado de depuración se puede ver en la Ventana de salida de Visual Studio cuando se ejecuta la aplicación en modo de depuración. Para abrir la Ventana de salida, haga clic en el elemento de menú Depurar, elija Windows y, a continuación, haga clic en Resultados. En la Ventana de salida, seleccione Depurar en el cuadro Mostrar resultados desde.
De manera predeterminada, My.Application.Log escribe el archivo de registro en la ruta de acceso a los datos de la aplicación del usuario. La ruta de acceso puede obtenerse de la propiedad FullLogFileName del objeto DefaultFileLogWriter. El formato de esa ruta de acceso es como sigue:
BasePath\CompanyName\ProductName\ProductVersion
Un valor típico para BasePath puede ser el siguiente.
C:\Documents and Settings\username\Datos de programa.
Los valores de CompanyName, ProductName y ProductVersion proceden de la información de ensamblado de la aplicación. El formato del nombre del archivo de registro es AssemblyName.log, donde AssemblyName es el nombre de archivo del ensamblado sin la extensión. Si se necesita más de un archivo de registro, como cuando el registro original no está disponible mientras la aplicación intenta escribir en él, el formato del nombre del archivo de registro es AssemblyName-iteration.log, donde iteration es un valor Integer positivo.
Puede reemplazar el comportamiento predeterminado agregando o cambiando los archivos de configuración del equipo y de la aplicación. Para obtener más información, vea Tutorial: Cambiar el lugar en el que My.Application.Log escribe la información (Visual Basic).
Configurar la configuración del registro
El objeto Log tiene una implementación predeterminada que funciona sin un archivo de configuración de la aplicación, app.config. Para cambiar los valores predeterminados, debe agregar un archivo de configuración con la nueva configuración. Para obtener más información, vea Tutorial: Filtrar el resultado de My.Application.Log (Visual Basic).
Las secciones de configuración de registro se encuentran en el nodo <system.diagnostics> del nodo <configuration> principal del archivo app.config. La información del registro se define en varios nodos:
Los agentes de escucha para el objeto Log se definen en el nodo de <sources> denominado DefaultSource.
El filtro de gravedad para el objeto Log se define en el nodo de <switches> denominado DefaultSwitch.
Los agentes de escucha de registro se definen en el nodo <sharedListeners>.
En el código siguiente se muestran ejemplos de nodos <sources>, <switches> y <sharedListeners>:
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</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"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
Cambiar la configuración del registro después de la implementación
Al desarrollar una aplicación, sus opciones de configuración se almacenan en el archivo app.config, como se muestra en los ejemplos anteriores. Después de implementar su aplicación, todavía puede configurar el registro editando el archivo de configuración. En una aplicación basada en Windows, el nombre de este archivo es applicationName.exe.config y debe encontrarse en la misma carpeta que el archivo ejecutable. Para una aplicación Web, se trata del archivo Web.config asociado al proyecto.
Cuando la aplicación ejecuta el código que crea una instancia de una clase por primera vez, comprueba el archivo de configuración para obtener información sobre el objeto. Para el objeto Log, esto ocurre la primera vez que se tiene acceso al objeto Log. El sistema sólo examina el archivo de configuración una vez para cualquier objeto específico: la primera vez que la aplicación crea el objeto. Por consiguiente, puede ser necesario reiniciar la aplicación para que los cambios surtan efecto.
En una aplicación implementada, el código de traza se habilita volviendo a configurar los objetos modificadores antes de que se inicie la aplicación. Normalmente, esto implica activar y desactivar los modificadores cambiando los niveles de traza y, a continuación, volver a iniciar la aplicación.
Consideraciones de seguridad
Tenga en cuenta lo siguiente al escribir los datos en el registro:
Evite incluir información sobre el usuario. Asegúrese de que su aplicación sólo escribe en el registro información autorizada. Por ejemplo, puede ser aceptable que el registro de aplicación contenga los nombres de usuario, pero no las contraseñas.
Haga que las ubicaciones del registro seguras Cualquier registro que contenga información potencialmente confidencial se debería almacenar en una ubicación segura.
Evite incluir información que podría conducir a error. En general, su aplicación debería validar todos los datos escritos por un usuario antes de utilizar esos datos. Esto incluye la escritura de datos en el registro de aplicación.
Evite las denegaciones de servicio. Si su aplicación escribe demasiada información en el registro, podría llenar el registro o dificultar la búsqueda de información importante.
Vea también
Referencia
Microsoft.VisualBasic.Logging.Log