在C#中查询消息内容的事件日志的最简单方法是什么?

我有兴趣编写一些代码来查询Windows事件日志中的特定错误消息内容 ,如本MSDN文章中所述 。 但是,我不是基本上手动滚动XPATH或代码中的自定义事件视图的机制的忠实粉丝……有更简单的方法吗? 也许LINQ提供商?

您可以在事件查看器中创建自定义视图并复制生成的XML。 架构完全相同。

另一种选择是一次读取一个事件,并使用字符串搜索,XPATH或LINQ to XML检查其内容。 显然,不是最具扩展性的解决方案,尤其是在查询远程服务器时。

谷歌搜索可以发现一些似乎使用LINQ查询事件日志的样本,但他们实际上只是枚举所有条目。 似乎没有任何提供程序能够真正将LINQ查询转换为正确的XML并返回结果

也许有人会觉得这很有用……

我正在使用LinqPad查询远程计算机上的安全事件日志。 它工作有点慢,但产生我需要的结果。 查询我正在使用:

EventLog elog = new EventLog(); elog.MachineName = "REMOTE MACHINE NAME"; elog.Log = "Security"; var query = from EventLogEntry e in elog.Entries where e.EventID == 560 // EVENT CODE (FILE DELETION IN MY CASE) && e.UserName == @"DOMAIN\USERNAME" && e.Message.Contains("TEXT INSIDE THE MESSAGE") select e; query.Dump();