Bagikan melalui


Menulis ke File Log Berdasarkan Peristiwa

Kelas LogFileEventConsumer dapat menulis teks yang telah ditentukan sebelumnya ke file log saat peristiwa tertentu terjadi. Kelas ini adalah konsumen peristiwa standar yang disediakan WMI.

Prosedur dasar untuk menggunakan konsumen standar selalu sama, dan terletak di Pemantauan dan Merespons Peristiwa dengan Konsumen Standar.

Prosedur berikut menambahkan ke prosedur dasar, khusus untuk kelas LogFileEventConsumer , dan menjelaskan cara membuat konsumen peristiwa yang menjalankan program.

Untuk membuat konsumen peristiwa yang menulis ke file log

  1. Dalam file Managed Object Format (MOF), buat instans LogFileEventConsumer untuk menerima peristiwa yang Anda minta dalam kueri, beri nama instans di properti Nama , lalu tempatkan jalur ke file log di properti Nama File.

    Untuk informasi selengkapnya, lihat Mendesain Kelas Format Objek Terkelola (MOF).

  2. Berikan templat teks untuk menulis ke file log di properti Teks.

    Untuk informasi selengkapnya, lihat Menggunakan Templat String Standar.

  3. Buat instans __EventFilter dan tentukan kueri untuk menentukan peristiwa yang akan mengaktifkan konsumen.

    Untuk informasi selengkapnya, lihat Mengkueri dengan WQL.

  4. Buat instans __FilterToConsumerBinding untuk mengaitkan filter dengan instans LogFileEventConsumer.

  5. Untuk mengontrol siapa yang membaca atau menulis ke file log Anda, atur keamanan pada direktori tempat log berada ke tingkat yang diperlukan.

  6. Kompilasi file MOF Anda menggunakan Mofcomp.exe.

Contoh

Contoh di bagian ini ada dalam kode MOF, tetapi Anda dapat membuat instans secara terprogram dengan menggunakan Scripting API untuk WMI atau COM API untuk WMI. Contoh menggunakan LogFileEventConsumer standar untuk membuat kelas konsumen bernama LogFileEvent yang menulis baris ke file c:\Logfile.log saat instans kelas LogFileEvent dibuat.

Prosedur berikut menjelaskan cara menggunakan contoh.

Untuk menggunakan contoh

  1. Salin daftar MOF di bawah ini ke dalam file teks dan simpan dengan ekstensi .mof.

  2. Di jendela perintah, kompilasi file MOF dengan menggunakan perintah berikut.

    Mofcomp filename**.mof**

  3. Buka Logfile.log untuk melihat baris yang ditentukan oleh LogFileEvent.Name: "Peristiwa Logfile Event Consumer".

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

Memantau dan Merespons Peristiwa dengan Konsumen Standar