【问题标题】:How to read only new events added to the event log?如何仅读取添加到事件日志中的新事件?
【发布时间】:2018-12-28 07:18:25
【问题描述】:

我正在做一个项目来读取和显示 Windows 事件日志。我已经使用以下代码从事件日志中读取事件并显示它们。

public static void Main(string[] args)
{
    EventLog[] ev;

    ev = EventLog.GetEventLogs();

    Console.WriteLine("Number of logs on computer: " + ev.Length);

    foreach (EventLog log in ev)
    {
        Console.WriteLine("Log: " + log.Log);
        foreach (EventLogEntry entry in log.Entries)
        {
            Console.WriteLine("Entry: " + entry.Message);
            Console.WriteLine("Source: " + entry.Source);
            Console.WriteLine("Category: " + entry.Category);
            Console.WriteLine("EventID: " + entry.Source);
        }
    }
}

此代码运行良好。它显示已存储在日志文件中的所有事件。但在此之后我想要实现的是,我必须阅读即将发生的事件和update them every 10 seconds

如果我继续并再次调用相同的函数,我将获得所有事件,但我只想要新添加的事件。我如何做到这一点?

TL DR:我只想在事件日志中监听新添加的事件,而不是整个事件日志

【问题讨论】:

    标签: c# windows winapi event-log


    【解决方案1】:

    你可以这样做

    EventLog appLogs = new EventLog("Application");
    
    var entries = appLogs.Entries.Cast<EventLogEntry>()
                         .Where(x => x.TimeWritten >= DateTime.Now.AddMinutes(-60))
                         .ToList();
    

    但是,您过滤的时间无关紧要,仍然需要相同的时间。

    我没有办法加快速度(我知道)

    虽然您可能想查看EventLog.EntryWritten Event

    在将条目写入本地计算机上的事件日志时发生。

    备注

    要获取事件通知,您必须将 EnableRaisingEvents 设置为 true。 您只能在写入条目时收到事件通知 本地计算机。您无法收到参赛通知 写在远程计算机上。

    EventLog myNewLog = new EventLog("Application", ".", "testEventLogEvent");                 
    
    myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
    myNewLog.EnableRaisingEvents = true;
    

    大概这将比尝试轮询 EventLog Plumbing 更轻松

    【讨论】:

    • 感谢@TheGeneral 的解决方案,如果有类似事件收集器的东西可以直接收集事件,而不是从事件日志中读取它们,那就太好了!
    【解决方案2】:

    我自己通过 MSDN 找到了解决方案。这是为将来可能来到这里的人准备的,EntryWrittenEventHandler 是解决方案。

    虽然我只是想添加上一个答案是正确的,但您可以使用 EventLogWatcher 为管理日志以外的日志添加事件处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      相关资源
      最近更新 更多