Programmatically diagnosing the root cause of a problem in a computing
system. Events are monitored within an operating system, and at least a
subset of the events are logged to a log file. In response to the
detection of error condition(s), a diagnostics module is invoked. The
diagnostics module queries the log file to correlate events relevant to
diagnosis of the problem, and identifies the root cause by evaluating the
results of the query. Once the root cause of the problem is diagnosed, a
resolution module corresponding to that root cause may be invoked to
programmatically resolve the problem. The invocation of the diagnostic
and resolution modules may be subject to policy rules. Furthermore, the
logging, diagnostics and resolution modules may be automatically updated
as needed.