6.10. Watching the Event Log for a Specific Entry
Problem
You may have multiple applications that write to a single event log. For each of these applications, you want a monitoring application to watch for one or more specific log entries to be written to the event log. For example, you might want to watch for a log entry that indicates that an application encountered a critical error or shut down unexpectedly. These log entries should be reported in real time.
Solution
Monitoring an event log for a specific entry requires the following steps:
Create the following method to set up the event handler to handle event log writes:
public void WatchForAppEvent(EventLog log) { log.EnableRaisingEvents = true; log.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten); }
Create the event handler to examine the log entries and determine whether further action is to be performed. For example:
public static void OnEntryWritten(object source, EntryWrittenEventArgs entryArg) { if (entryArg.Entry.EntryType == EventLogEntryType.Error) { Console.WriteLine(entryArg.Entry.Message); Console.WriteLine(entryArg.Entry.Category); Console.WriteLine(entryArg.Entry.EntryType.ToString( )); // Do further actions here as necessary... } }
Discussion
This recipe revolves around the
EntryWrittenEventHandler
delegate, which calls back a method whenever any new entry is written
to the event log. The EntryWrittenEventHandler
delegate accepts two arguments: a source
of type object
and an
entryArg
of type
EntryWrittenEventArgs ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.