是否有任何 C# 框架或代码来解析 *blg 性能计数器日志文件?
Posted
技术标签:
【中文标题】是否有任何 C# 框架或代码来解析 *blg 性能计数器日志文件?【英文标题】:Is there any C# framework or code to parse *blg Perfomance Counter log files? 【发布时间】:2010-12-09 09:08:24 【问题描述】:任务不是在我的 .NET 应用程序中收集性能计数器数据,而是打开已经准备好的二进制日志文件 (*.blg)?
我知道 MS SQL Profiler (.NET app) 可以解析二进制日志。
【问题讨论】:
【参考方案1】:据我所知,.blg 文件格式似乎是专有的,规范并未公开发布。也就是说,我认为您无法找到对这种格式进行原始解析的框架或库。在没有规范的情况下编写一个库来解析这种格式并非没有风险,因为可能必须做出假设......即使你要对二进制格式进行逆向工程,你也总是有可能错过解析器实现中的某些规则,从而导致未来的潜在问题。
也就是说,我可以想到 2 个其他选项来解析二进制日志文件以在 .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 或重新登录将非常容易
【讨论】:
【参考方案2】: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();
您还可以在 LINQpad 的 Tx 示例中找到如何使用它的示例:
【讨论】:
谢谢你的提示,我会试试的。T(hn)x。 Linqpad 示例必须在 LINQPad 5 中手动下载,单击示例窗格按钮上的下载/导入示例按钮。【参考方案3】:微软已经开放了 PowerShell 源代码,所以现在我们也可以在上面的 pdh.dll 上找到如何实现我们自己的阅读器。
https://github.com/PowerShell/PowerShell/tree/master/src/Microsoft.PowerShell.Commands.Diagnostics
【讨论】:
以上是关于是否有任何 C# 框架或代码来解析 *blg 性能计数器日志文件?的主要内容,如果未能解决你的问题,请参考以下文章