Acceder a registros de eventos desde VB6 usando .NET
Introducción
Visual Basic puede escribir registros de eventos a través de App LogEvent, pero esta API tiene muchas limitaciones estrictas. En primer lugar, el origen del evento no se puede definir (siempre se muestra como VBRuntime). en el visor de eventos) Además, no puede especificar ID de eventos ni categorías de eventos. También lo limita a escribir en el registro de eventos de la aplicación y no crear sus propias fuentes y registros personalizados. Todas estas limitaciones se pueden superar mediante el uso de clases proporcionadas de forma gratuita. por .NET Framework Le permite escribir aplicaciones de manera eficiente para que los administradores de usuarios u otro personal de soporte puedan ver los registros para diagnosticar problemas. Clase NET Framework EventLog
NET Framework proporciona una poderosa clase EventLog con la que puede fácilmente. manejar registros de eventos Sin embargo, no puede acceder a esta clase directamente desde VB. En el espíritu de la serie de artículos VB Fusion (inglés), puede acceder a esta funcionalidad desde VB creando un contenedor que encapsule la clase NET.
También creé un registro de eventos de ejercicio para esta aplicación VB de ejemplo funcional
Figura de la aplicación VB usando la función de registro de eventos
La mayor parte del trabajo al crear el La clase contenedora es solo para convertir el tipo NET a tipos comprensibles de VB. El método GetEventLogs generalmente devuelve un conjunto de objetos EventLog. Sin embargo, estos objetos EventLog no se pueden usar directamente desde VB. Sin embargo, la siguiente función de VB.NET convierte una lista de todos los eventos. registros en la computadora en un conjunto de cadenas VB puede usar fácilmente estos caracteres. Cadena Normalmente tiene el Registro de eventos del sistema, el Registro de eventos de seguridad y el Registro de eventos de la aplicación, pero algunas aplicaciones también crean sus propios registros de eventos personalizados y este método también puede mostrar estos eventos. logs
Manifiesto usando VB .NET Enumere todos los registros de eventos en la computadora
Función pública GetEventLogs() As String() Dim logs(EventLog GetEventLogs Longitud) Como cadena Dim i As Integer = Para cada el como EventLog en EventLog GetEventLogs() logs( i) = el Log i += Next Devolver registros Función final
Puede ver que la clase EventLog le permite acceder a todos los registros de eventos a través de la función GetEventLogs Después de llamar a esta función, recorre los resultados y devuelve todos los registros de eventos. El nombre se convierte en un conjunto de cadenas y este código VB NET puede exponerse como un objeto que permite llamarlo desde VB
<. p> Llamar a este código desde VB y (por ejemplo) completar un cuadro de lista con los resultados es como se muestra a continuación. Es muy simpleLa lista usa VB para mostrar los nombres de los registros en el cuadro de lista
Dim eventLog As NetFrameworkWrappers EventLogWrapper Establecer eventLog = New NetFrameworkWrappers EventLogWrapper lstEventLogs Borrar Dim logs() As String logs = eventLog GetEventLogs Dim log como variante para cada registro In logs lstEventLogs AddItem log Siguiente método
Por varias razones, es posible que desee su aplicación pueda escribir en registros de eventos y, por supuesto, debería
Cualquier error catastrófico debe registrarse en el registro de eventos porque esta información se puede utilizar más adelante para diagnosticar problemas. Es posible que desee escribir detalles en el registro de eventos que no sean adecuados para mostrarlos al usuario.
Primero. debe seleccionar Qué registro usar se puede elegir entre el Registro de eventos del sistema, el Registro de eventos de seguridad o el Registro de eventos de la aplicación. El Registro de eventos de la aplicación es casi siempre la opción correcta, pero también puede crear su propio registro de eventos personalizado si es necesario. El siguiente código de VB NET en los contenedores del registro de eventos le permite crear su propio registro personalizado
Lista de verificación para crear un registro de eventos personalizado usando VB NET
Public Sub CreateEventSource(ByVal source As String ByVal logName As String) If EventLog SourceExists(source) Then EventLog DeleteEventSource(source) End If EventLog CreateEventSource(source logName) End Sub
Puede ver que puede crear fácilmente registros de eventos utilizando NET Framework. hace todo el trabajo por usted. Este método solo proporciona Esta función se ha agregado para que pueda llamarse fácilmente desde VB
Manifest Crear registro de eventos desde VB usando la clase contenedora
Dim eventLog. Como NetFrameworkWrappers EventLogWrapper Set eventLog = New NetFrameworkWrappers EventLogWrapper eventLog CreateEventSource MyApplication MyCustomLog p>
Escribir entradas en el registro de eventos también es muy simple. El método WriteEntry VB NET implementa la funcionalidad de registro de eventos y proporciona esta funcionalidad para que el método pueda. ser llamado desde VB
Lista de eventos en VB NET Entrada de escritura de registro
Sub WriteEntry pública (fuente ByVal como cadena _ mensaje ByVal como cadena _ opcional tipo ByVal como cadena = información _ opcional ByVal eventID As Integer = _ Opcional ByVal categoría As Short = ) Dim typeEnum As EventLogEntryType = _ System Enum Parse(GetType(EventLogEntryType) tipo) m_eventLog WriteEntry(mensaje fuente typeEnum eventID categoría) End Sub
Este método contenedor proporciona muchos parámetros opcionales, por lo que al llamar a este método desde VB puede pasar solo el origen del registro de eventos y el mensaje, también puede pasar el tipo de mensaje ID de evento y/o categoría de evento
Este método se puede llamar desde VB usando el siguiente código
Lista de eventos escritos en VB Log Entry
Dim eventLog As NetFrameworkWrappers EventLogWrapper Set eventLog = New NetFrameworkWrappers EventLogWrapper eventLog WriteEntry cboLog Te
xt txtMessage cboType Text _ txtID txtCategory Leer el registro
Leer información del registro de eventos es solo un poco más complicado. La clase NET Framework EventLog tiene un método GetEntries que devuelve los valores de un sistema de aplicación determinado. , etc.) registro de eventos El problema con todas las entradas del registro es que cada entrada se devuelve como un objeto EventLogEntry. No puedo pasarlas directamente a VB, pero puedo simplemente crear mi propia clase EventLogEntryInfo para copiar cada entrada del registro de eventos. into. Es una clase completa. Regrese a VB y proporcione el ID del tipo de mensaje de origen de entrada y las propiedades de categoría. El código NET de VB luego completará estas propiedades con los datos de entrada del registro de eventos y los devolverá para que puedan usarse desde VB. /p>
Listado leído en VB NET Obtener y convertir entradas del registro de eventos
Public Sub GetEntries(entradas ByRef() como EventLogEntryInfo) ReDim entradas(recuento de entradas m_eventLog) para i como entero = hasta entradas m_eventLog Count Dim ent As EventLogEntry = m_eventLog Entries(i) entradas(i) = Nuevas entradas EventLogEntryInfo(i) Categoría = ent CategoryNumber entradas(i) Mensaje = ent Entradas de mensaje(i) Fuente = ent Fuente entradas(i) EventID = ent EventID entradas(i) EntryType = ent EntryType Next End Sub
Después de completar esta función, VB tendrá acceso completo a las entradas del registro de eventos
Lista para obtener las entradas del registro de eventos en VB
Atenuar eventLog como NetFrameworkWrappers EventLogWrapper Establecer eventLog = New NetFrameworkWrappers EventLogWrapper eventLog Init logName Dim entradas() As NetFrameworkWrappers EventLogEntryInfo eventLog GetEntries entradas Conclusión
Creo que no es necesario reescribir las aplicaciones VB existentes para aprovechar la funcionalidad extendida proporcionada por NET Framework al igual que VB Fusion. Utilice estas clases contenedoras simples para proporcionar la funcionalidad de .NET Framework a través de objetos. Este objeto se puede usar en VB, VBA, ASP o cualquier entorno donde se pueda acceder al objeto. En este artículo, vio cómo incorporar una funcionalidad de registro de eventos rica en funciones. Agregar a una aplicación VB existente. No dude en descargar el código de muestra para agregar el registro de eventos a su aplicación existente.
Biografía de Scott Swigart
Scott Swigart trabaja en la fusión de tecnología y agregación. Consultoría técnica, trabajos escritos y oradores. Scott ha cubierto una amplia gama de tecnologías durante su carrera. Comenzó a programar Commodore a la edad de 14 años y escribió diagnósticos de hardware para sistemas UNIX en C++. y creó aplicaciones web y de escritorio para Windows. A lo largo de los años, Scott ha estado involucrado en el desarrollo de componentes.
Tecnologías XML, servicios web NET y otros esquemas y plataformas de lenguaje, Scott ha experimentado cómo la tecnología evoluciona y evoluciona con el tiempo. Está comprometido a ayudar a las organizaciones a aprovechar al máximo las tecnologías actuales mientras se prepara para las tecnologías del mañana. También es MVP de Microsoft y coautor de muchos libros y artículos. La información de contacto de Scott es scott@s lishixinzhi/Article/program/net/201311/12220
.