Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中查询事件日志中消息内容的最简单方法是什么?_C#_.net_Event Log - Fatal编程技术网

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

在C#中查询事件日志中消息内容的最简单方法是什么?,c#,.net,event-log,C#,.net,Event Log,我感兴趣的是编写一些代码来查询Windows事件日志中的特定错误消息内容,如中所述。但是,我不太喜欢基本上手动运行XPATH的机制或代码中的自定义事件视图……有更简单的方法吗?LINQ提供程序?您可以在事件查看器中创建自定义视图并复制生成的XML。模式完全相同 另一个选项是一次读取一个事件,并使用字符串搜索、XPATH或LINQ to XML检查其内容。显然,这不是最具可扩展性的解决方案,尤其是在查询远程服务器时 谷歌搜索可以找到一些似乎使用LINQ查询事件日志的示例,但它们实际上只是枚举所有条

我感兴趣的是编写一些代码来查询Windows事件日志中的特定错误消息内容,如中所述。但是,我不太喜欢基本上手动运行XPATH的机制或代码中的自定义事件视图……有更简单的方法吗?LINQ提供程序?

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

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


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

也许有人会发现这很有用

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

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();