c# - C# Linq - GroupBy - 从 Windows 事件日志中选择最常见/最常见的条目详细信息
问题描述
我是 C# 新手,但已成功使用 Linq 查询 Windows 事件日志,例如返回最后一小时的系统错误数。
但是,我还想过滤掉这些事件中最常见/最频繁的事件 - 并选择最新的事件。并从那里提取事件日志 ID、提供者名称、TimeCreated、计数/频率和消息。(这将用于记录到一个简单的文本文件。预期输出:
2021-04-23 07:00:00 - 08:00:00 COMPUTERNAME 系统错误 23 警告 11 信息 78 应用程序错误 0 警告 3 信息 7 Security_Count 411
最常见的错误类型:2021-04-23 07:00:00 - 08:00:00 COMPUTERNAME System Error Top Count:11 EventID:7 Source/ProviderName: Microsoft-Windows-NTFS 消息:bla bla bla
)
写入日志文件工作正常。我想不通的是如何使用 Linq 过滤掉这些数据
C#代码:
DateTime start = DateTime.Now.AddMilliseconds(-3600000);
DateTime end = DateTime.Now.AddMilliseconds(-1);
var evtlogresult = entries.Entries.Cast<EventLogEntry>()
.Where(
x => (
x.TimeWritten >= start
&& x.TimeWritten <= end
&& x.EntryType == EventLogEntryType.Error
))
.Select(
x => (
x.EventID,
x.EntryType,
x.Source,
x.Message,
x.TimeWritten,
x.MachineName,
x.Site,
x.UserName
)).ToList();
我已经在 PowerShell 中使用 group-object 完成了这项工作,我猜 Linq-groupBy 是一回事。
PowerShell 等价物:
$top_count = $evtlogresult | Group-Object EventID |
sort-object count -descending |
Select-Object -ExpandProperty count -first 1
我错过了什么?有什么建议么?谢谢。
解决方案
推荐阅读
- php - 当我尝试在 PHP 中打开 XML 文件时,权限被拒绝
- angular - 如何在表单级别观察模型变化
- python - 从 HTML 页面中提取 css
- php - Laravel - 它可能在具有无符号数据类型字符串的表上添加外键?
- php - 将主键连接到 MySQL 中另一个表的行
- algorithm - 一个完全二叉树的算法问题
- r - 循环遍历行并更改 R 中的缺失值
- javascript - 使用 lodash 转换或规范化嵌套的 JSON
- python - Python Selenium 查找随机生成的元素 ID
- javascript - 在带有回调的单独函数中获取 AWS getSignedUrl 函数的返回值