是否有任何C#框架或代码来解析* blg性能计数器日志文件?

时间:2010-12-09 09:08:25

标签: c# .net performancecounter binary-data

任务不是在我的.NET应用程序中收集性能计数器数据,而是打开已准备好的二进制日志文件(* .blg)?

我知道MS SQL Profiler(.NET应用程序)可以解析二进制日志。

3 个答案:

答案 0 :(得分:7)

据我所知,似乎.blg文件格式是专有的,规范并未公开发布。这就是说我不认为你能找到一个对这种格式进行原始解析的框架或库。在没有规范的情况下编写一个库来解析这种格式并非没有风险,因为可能必须进行假设...即使您要对二进制格式进行逆向工程,也总是有可能错过解析器实现中的某些规则未来的潜在问题。

也就是说,我可以考虑解析二进制日志文件的其他两个选项,以便在.NET应用程序中使用。

  1. PowerShell的Import-Counter cmdlet可用于从blg文件导入计数器数据,从而为源中的每个计数器样本生成对象。结果输出可以以多种方式使用。我能想到的最简单的例子是将您的源代码转换为CSV格式以便进一步处理:

    C:\PS> $data = import-counter .\exampledata.blg
    C:\PS> $data | export-counter -path .\output.csv -FileFormat csv

  2. relog是另一种选择。这是Windows操作系统的大多数主要版本附带的命令行实用程序。同样,这里的方法是将blg文件转换为CSV格式以便于解析。例如:

    relog -f csv inputfile.blg -o outputFile.csv

  3. 鉴于上述选项,您应该能够从那里开始。使用Process.Start()

    从C#程序运行powershell或relog非常容易

答案 1 :(得分:3)

Tx (LINQ to Logs and Traces)是一个可以解析blg文件的C#库。

这就是用法:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

您还可以在LINQpad的Tx示例中找到如何使用它的示例:

Tx's LINQpad samples

答案 2 :(得分:0)

Microsoft已打开PowerShell源代码,因此现在我们也可以在顶部的pdh.dll上找到如何实现自己的读取器的方法。

https://github.com/PowerShell/PowerShell/tree/master/src/Microsoft.PowerShell.Commands.Diagnostics