我使用C#读取,并希望从中选择/筛选条目。问题是,事件查看器中显示的信息并不总是与我从c#获得的数据相匹配。
例如:
EventViewer“来源”:“用户配置文件服务”
使用EventLogEntry类:属性"Source":“服务”
使用EventLogReader类:属性"ProviderName":“服务”
使用WMI:"SourceName":“Microsoft用户配置文件服务”
我需要能够读取EventViewer中显示的确切信息,从哪里可以获得这些信息?
阅读EventLog信息..。
当使用EventLog类读取EventLogEntry消息时,我偶尔会得到以下字符串:
无法找到源"xxx“中事件ID "xxx”的说明
同样,这与EventViewer中显示的消息不匹配.我尝试过使用EventLogReader.FormatDescription()方法,它给了我权限(与EventViewer相同)消息,但是对于某些条目,它只是返回null,而EventLogEntry.Message包含正确的文本。
检索事件的消息以获得与EventViewer中显示的消息相同的消息的正确方法是什么?
发布于 2012-01-11 20:55:38
var eventLog = new EventLog("logName", "machine", "source");
foreach(var entry in eventLog.Entries)
{
}在与日志交互时,这是一个相当基本的测试。如果需要对该源进行更深层次的筛选,则可以在条目上编写LINQ查询。如图所示,这里。
至于错误,一个常见的原因是无法正确访问有关框上的事件和/或注册表。由于您可以在EventViewer中看到有问题的数据,我怀疑权限错误是一个很好的可能性。
发布于 2013-03-20 17:01:48
事件查看器中的"Source“列中显示的"Source”字符串似乎是缩写的。而且,当您试图在EventLog中创建C#时,日志类型似乎很重要。“应用程序”、“系统”等等。一旦您创建了一个EventLog,它将包含该日志类型的所有条目,而不管您指定了什么源。
为了获得基于"Source“的事件,您需要迭代这些条目并只过滤该"Source”的条目。请记住,实际的源名称与您在事件查看器中看到的不一样。例如,对于Source "Winlogon“,实际的源名称应该是:”Microsoft Winlogon“等等。
https://stackoverflow.com/questions/8821395
复制相似问题