Condividi tramite


Scrittura in un file di log basato su un evento

La classe LogFileEventConsumer può scrivere testo predefinito in un file di log quando si verifica un evento specificato. Questa classe è un consumer di eventi standard fornito da WMI.

La procedura di base per l'utilizzo dei consumer standard è sempre la stessa e si trova in Monitoraggio e risposta agli eventi con consumer standard.

La procedura seguente aggiunge alla routine di base, è specifica della classe LogFileEventConsumer e descrive come creare un consumer di eventi che esegue un programma.

Per creare un consumer di eventi che scrive in un file di log

  1. Nel file MOF (Managed Object Format) creare un'istanza di LogFileEventConsumer per ricevere gli eventi richiesti nella query, denominare l'istanza nella proprietà Name e quindi inserire il percorso del file di log nella proprietà Filename.

    Per altre informazioni, vedere Progettazione di classi MOF (Managed Object Format).

  2. Specificare il modello di testo da scrivere nel file di log nella proprietà Text.

    Per altre informazioni, vedere Uso di modelli di stringa standard.

  3. Creare un'istanza di __EventFilter e definire una query per specificare gli eventi che attiveranno il consumer.

    Per altre informazioni, vedere Esecuzione di query con WQL.

  4. Creare un'istanza di __FilterToConsumerBinding per associare il filtro all'istanza di LogFileEventConsumer.

  5. Per controllare chi legge o scrive nel file di log, impostare la sicurezza nella directory in cui si trova il log al livello richiesto.

  6. Compilare il file MOF usando Mofcomp.exe.

Esempio

L'esempio in questa sezione si trova nel codice MOF, ma è possibile creare le istanze a livello di codice usando l'API di scripting per WMI o l'API COM per WMI. Nell'esempio viene usato lo standard LogFileEventConsumer per creare una classe consumer denominata LogFileEvent che scrive una riga nel file c:\Logfile.log quando viene creata un'istanza della classe LogFileEvent.

La procedura seguente descrive come usare l'esempio.

Per usare l'esempio

  1. Copiare l'elenco MOF seguente in un file di testo e salvarlo con estensione mof.

  2. In una finestra di comando compilare il file MOF usando il comando seguente.

    Mofcomp filename**.mof**

  3. Aprire Logfile.log per visualizzare la riga specificata da LogFileEvent.Name: "Evento Consumer eventi Logfile".

// 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";  
};

Monitoraggio e risposta agli eventi con consumer standard