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:

  1. 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);
    }
  2. 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.