首页 > 解决方案 > 使用 PowerShell 计算日志文件中的唯一错误消息

问题描述

我有几个包含数百行的日志文件,格式如下:

{"time": 0800, "service":"A service", "id": 5, "error":"bad"}  
{"time": 0900, "service":"B service", "id": 6, "error":"good"}  

我希望能够遍历每个文件并输出一个表,其中包含每个唯一错误消息的计数.. 像这样:

错误“坏”出现了 5 次

错误“好”出现了 3 次

我不确定在这种情况下将内容转换为 JSON 是否有意义,但到目前为止我已经完成了以下操作以至少识别唯一字符串:

Get-Childitem -path "\path" | Select-string -Pattern "good"

这给了我所有“好”的信息。

在我看来,可以使用带有计数器的循环来捕获独特事件。使用 PowerShell 实现所有这些的最佳方法是什么?

标签: powershell

解决方案


将文件中的 json 字符串转换为对象,ConvertFrom-Json然后error使用以下属性将它们分组Group-Object

Get-Childitem -path "\path" |ConvertFrom-Json |Group-Object error -NoElement

推荐阅读