首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C#读取Windows日志(Source != ProviderName != SourceName)

用C#读取Windows日志(Source != ProviderName != SourceName)
EN

Stack Overflow用户
提问于 2012-01-11 14:57:56
回答 2查看 16.4K关注 0票数 3

我使用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中显示的消息相同的消息的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2012-01-11 20:55:38

代码语言:javascript
复制
var eventLog = new EventLog("logName", "machine", "source");
foreach(var entry in eventLog.Entries)
{
}

在与日志交互时,这是一个相当基本的测试。如果需要对该源进行更深层次的筛选,则可以在条目上编写LINQ查询。如图所示,这里

至于错误,一个常见的原因是无法正确访问有关框上的事件和/或注册表。由于您可以在EventViewer中看到有问题的数据,我怀疑权限错误是一个很好的可能性。

票数 2
EN

Stack Overflow用户

发布于 2013-03-20 17:01:48

事件查看器中的"Source“列中显示的"Source”字符串似乎是缩写的。而且,当您试图在EventLog中创建C#时,日志类型似乎很重要。“应用程序”、“系统”等等。一旦您创建了一个EventLog,它将包含该日志类型的所有条目,而不管您指定了什么源。

为了获得基于"Source“的事件,您需要迭代这些条目并只过滤该"Source”的条目。请记住,实际的源名称与您在事件查看器中看到的不一样。例如,对于Source "Winlogon“,实际的源名称应该是:”Microsoft Winlogon“等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8821395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档