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

时间:2012-02-03 14:11:37

标签: c# .net event-log

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

2 个答案:

答案 0 :(得分:3)

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

我使用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();

答案 1 :(得分:2)

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

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

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