Skriva till en loggfil baserat på en händelse
Klassen LogFileEventConsumer kan skriva fördefinierad text till en loggfil när en angiven händelse inträffar. Den här klassen är en standardhändelsekonsument som WMI tillhandahåller.
Den grundläggande proceduren för att använda standardkonsumenter är alltid densamma och finns i Övervakning och svara på händelser med standardkonsumenter.
Följande procedur lägger till den grundläggande proceduren, är specifik för klassen LogFileEventConsumer och beskriver hur du skapar en händelsekonsument som kör ett program.
Skapa en händelsekonsument som skriver till en loggfil
I MOF-filen (Managed Object Format) skapar du en instans av LogFileEventConsumer för att ta emot de händelser som du begär i frågan, namnge instansen i egenskapen Name och placera sedan sökvägen till loggfilen i egenskapen Filename.
Mer information finns i Utforma MOF-klasser (Managed Object Format).
Ange textmallen som ska skrivas till loggfilen i egenskapen Text.
Mer information finns i Using Standard String Templates.
Skapa en instans av __EventFilter och definiera en fråga för att ange de händelser som ska aktivera konsumenten.
Mer information finns i Querying with WQL.
Skapa en instans av __FilterToConsumerBinding för att associera filtret med instansen av LogFileEventConsumer.
Om du vill styra vem som läser eller skriver till loggfilen anger du säkerheten i katalogen där loggen finns på den nivå som krävs.
Kompilera MOF-filen med hjälp av Mofcomp.exe.
Exempel
Exemplet i det här avsnittet finns i MOF-kod, men du kan skapa instanserna programmatiskt med hjälp av Scripting API för WMI eller COM API för WMI. I exemplet används Standard LogFileEventConsumer för att skapa en konsumentklass med namnet LogFileEvent som skriver en rad till filen c:\Logfile.log när en instans av klassen LogFileEvent skapas.
Följande procedur beskriver hur du använder exemplet.
Om du vill använda exemplet
Kopiera MOF-listan nedan till en textfil och spara den med ett .mof-tillägg.
Kompilera MOF-filen i ett kommandofönster med hjälp av följande kommando.
Mofcompfilnamn**.mof**
Öppna Logfile.log för att se den rad som anges av LogFileEvent.Name: "Logfile Event Consumer 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";
};
Relaterade ämnen