Windows应用程序日志事件';错过';以某种方式使用我的EventLog
本文关键字:方式使 EventLog 我的 错过 应用程序 日志 事件 Windows | 更新日期: 2023-09-27 18:27:19
我编写了一个应用程序,该应用程序的一个组件使用特定的Source和EventID监视Windows应用程序日志中引发的事件,以便从中解析数据。然而,它似乎没有明显的原因错过了其中一些活动。
我包含了调试消息,试图查看问题所在——这采用了发送到文本字段的注释的形式。
将条目写入应用程序日志时,会在调试文本字段中添加一条带时间戳的消息,并调用parseApplicationLogEntry()
private void eventLogApplication_EntryWritten(object sender,
System.Diagnostics.EntryWrittenEventArgs e)
{
txtDebug.Text = txtDebug.Text + "'n " + DateTime.Now.ToLongTimeString() +
+ ": Application Log has been written.";
parseApplicationLogEntry();
}
将解析应用程序日志条目,并查看Source和EventID以确定它们是否是我们要查找的内容。调试文本中会添加一条带时间戳的消息,显示找到的Source和EventID
private void parseApplicationLogEntry()
{
System.Diagnostics.EventLog log = new System.Diagnostics.EventLog("Application");
int entry = log.Entries.Count - 1;
string logMessage = log.Entries[entry].Message;
string logSource = log.Entries[entry].Source;
string logEventID = log.Entries[entry].InstanceId.ToString();
log.Close();
txtDebug.Text = txtDebug.Text + "'n " + DateTime.Now.ToLongTimeString() +
": Application Log Source is " + logSource;
txtDebug.Text = txtDebug.Text + "'n " + DateTime.Now.ToLongTimeString() +
": Application Log EventID is " + logEventID;
if (logSource == "ExpectedSource" & logEventID == "ExpectedEventID")
{
// Do stuff
}
}
这种行为在很多时候都是意料之中的,但有时也会出现非常奇怪的行为。
例如,有13个日志被写入到应用程序日志中。3个与所查找的源,10个与另一个源。调试文本显示看到了13个条目,所有条目的来源都不熟悉。。。
我不知道从这里到哪里去。
不需要以这种方式访问EventLog来查看最新条目。
与每次写入新条目时调用方法迭代EventLog不同,使用每次写入条目时触发的事件处理程序更直接地访问条目更简单(更安全)。
private void eventLog_Application_EntryWritten(object sender, EntryWrittenEventArgs e)
{
// Process e.Entry
}