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

发布于 2025-01-02 23:16:25 字数 246 浏览 0 评论 0原文

我有兴趣编写一些代码来查询 Windows 事件日志以获取特定错误消息内容,如 这篇 MSDN 文章。然而,我不太喜欢在代码中手动滚动 XPATH 或自定义事件视图的机制......有没有更简单的方法来做到这一点?也许是 LINQ 提供商?

I'm interested in writing some code to query the Windows Event Log for specific error message contents, as described in this MSDN article. However, I'm not a big fan of the mechanic of basically hand-rolling XPATH or a custom event view in the code...is there a simpler way of doing this? A LINQ provider perhaps?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£冰雨忧蓝° 2025-01-09 23:16:25

也许有人会发现这很有用...

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

Maybe someone will find this useful...

I'm using LinqPad to query Security Event Log on remote machine. It working a little bit slowly but produces result I need. Query I'm using:

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();
岁月蹉跎了容颜 2025-01-09 23:16:25

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

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

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

You can create a custom view in Event Viewer and copy the generated XML. The schema is exactly the same.

The other option is to read the events one at a time and check their contents using string searches, XPATH or LINQ to XML. Obviously, not the most scalable solution, especially when querying remote servers.

Googling can turn up some samples that seem to be using LINQ to query the Event Log but they really just enumerate over all the entries. There doesn't seem to be any provider that will really convert a LINQ query to the proper XML and return the results

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文