Compartir a través de


Escritura en un archivo de registro basada en un evento

La LogFileEventConsumer clase puede escribir texto predefinido en un archivo de registro cuando se produce un evento especificado. Esta clase es un consumidor de eventos estándar que proporciona WMI.

El procedimiento básico para utilizar consumidores estándar es siempre el mismo, y se encuentra en Supervisión y respuesta a eventos con consumidores estándar.

El siguiente procedimiento que se añade al procedimiento básico, es específico del LogFileEventConsumer clase y describe cómo crear un consumidor de eventos que ejecute un programa.

Para crear un consumidor de eventos que escribe un archivo de registro

  1. En el archivo Managed Object Format (MOF), cree una instancia de LogFileEventConsumer para recibir los eventos que solicite en la consulta, nombre la instancia en el campo Name propiedad y, a continuación, coloque la ruta al archivo de registro en el nombre de archivo propiedad.

    Para obtener más información, vea Diseño de clases de formato de Managed Object Format (MOF).

  2. Proporcione la plantilla de texto para escribir en el archivo de registro en la propiedad Text.

    Para más información, véase Uso de plantillas de cadenas estándar.

  3. Crear, y nombrar, una instancia de __EventFilter y defina una consulta para especificar los eventos que activarán el consumidor.

    Para más información, véase Consulta con WQL.

  4. Crear una instancia de __FilterToConsumerBinding para asociar el filtro con la instancia de LogFileEventConsumer.

  5. Para controlar quién lee o escribe en su archivo de registro, establezca la seguridad en el directorio donde se encuentra el registro al nivel requerido.

  6. Compile su archivo MOF utilizando Mofcomp.exe.

Ejemplo

El ejemplo de esta sección está en código MOF, pero puede crear las instancias mediante programación utilizando la función Scripting API para WMI o el COM API para WMI. El ejemplo utiliza el estándar LogFileEventConsumer para crear una clase consumidora llamada LogFileEvent que escribe una línea en el archivo c:\Logfile.log cuando se crea una instancia de la clase LogFileEvent.

El siguiente procedimiento describe cómo usar el ejemplo.

Para usar el ejemplo

  1. Copie el listado MOF que aparece a continuación en un archivo de texto y guárdelo con extensión .mof.

  2. En una ventana de comando, compile el archivo MOF utilizando el siguiente comando.

    Mofcomp nombre de archivo**.mof**

  3. Abra Logfile.log para ver la línea especificada por LogFileEvent.Name: "Logfile Event Consumer event event".

// Set the namespace as root\subscription.
// The LogFileEventConsumer is already compiled 
//     in the root\subscription namespace. 

#pragma namespace ("\\\\.\\Root\\subscription")

class LogFileEvent
{
    [key]string Name;
};

// Create an instance of the standard log
// file consumer and give it the alias $CONSUMER

instance of LogFileEventConsumer as $CONSUMER
{
    // If the file does not already exist, it is created.
    Filename = "c:\\Logfile.log";  
    IsUnicode = FALSE;
    // Name of this instance of LogFileEventConsumer
    Name = "LogfileEventConsumer_Example";  
    // See "Using Standard String Templates"; 
    Text = "%TargetInstance.Name%"; 
    // TargetInstance is the instance of LogFileEvent 
    //    requested in the filter        
                                         
};

// Create an instance of the event filter 
// and give it the alias $FILTER
// Query for any instance operation type,
// such as instance creation, for LogFileEvent class

instance of __EventFilter as $FILTER
{
    Name = "LogFileFilter";
    Query = "SELECT * FROM __InstanceOperationEvent "
        "WHERE TargetInstance.__class = \"LogFileEvent\"";
    QueryLanguage = "WQL";
};

// Create an instance of the binding.

instance of __FilterToConsumerBinding
{
    Consumer=$CONSUMER;
    Filter=$FILTER;
 DeliverSynchronously=FALSE;
};

// Create an instance of this class right now
// Look at the file c:\Logfile.log to see
// that a line has been written.

instance of LogFileEvent
{
 Name = "Logfile Event Consumer event";  
};

Supervisión y respuesta a eventos con consumidores estándar