ska*_*eff 5 .net c# performancecounter binary-data
任务不是在我的.NET应用程序中收集性能计数器数据,而是打开已经准备好的二进制日志文件(*.blg)?
我知道MS SQL Profiler(.NET应用程序)可以解析二进制日志.
根据我的发现,似乎.blg文件格式是专有的,并且规范未公开发布.这就是说我不认为你能找到一个对这种格式进行原始解析的框架或库.在没有规范的情况下编写一个库来解析这种格式并非没有风险,因为可能必须进行假设...即使您要对二进制格式进行逆向工程,也总是有可能错过解析器实现中的某些规则未来的潜在问题.
也就是说,我可以考虑解析二进制日志文件的其他两个选项,以便在.NET应用程序中使用.
PowerShell的Import-Counter cmdlet可用于从blg文件导入计数器数据,从而为源中的每个计数器样本生成对象.结果输出可以以多种方式使用.我能想到的最简单的例子是将您的源代码转换为CSV格式以便进一步处理:
C:\PS> $data = import-counter .\exampledata.blg
C:\PS> $data | export-counter -path .\output.csv -FileFormat csv
relog是另一种选择.这是Windows操作系统的大多数主要版本附带的命令行实用程序.同样,这里的方法是将blg文件转换为CSV格式以便于解析.例:
relog -f csv inputfile.blg -o outputFile.csv
鉴于上述选项,您应该能够从那里开始.使用Process.Start()从C#程序运行powershell或relog非常容易
Tx (LINQ to Logs and Traces)是一个可以解析 blg 文件的 C# 库。
这就是用法:
var playback = new Playback();
playback.AddPerfCounterTraces(@"C:\bin\Release\Net40\BasicPerfCounters.blg");
playback
.GetObservable<PerformanceSample>()
.Dump();
playback.Run();
Run Code Online (Sandbox Code Playgroud)
您还可以找到如何在 LINQpad 的 Tx 示例中使用它的示例: