如何以编程方式记录 PerformanceCounter

Posted

技术标签:

【中文标题】如何以编程方式记录 PerformanceCounter【英文标题】:How to programmatically log PerformanceCounter 【发布时间】:2010-08-25 07:26:29 【问题描述】:

我知道使用Perfmon.msc 可以创建自定义性能计数器,并且可以使用计数器日志将计数器值写入文本文件。

我也知道我也可以通过使用System.Diagnostics.PerformanceCounter 创建一个性能计数器以编程方式使用它,并使用NextValue() 方法获取计数器值。 是否有编程方式告诉PerformanceCounter 对象也将日志写入文本文件(类似于perfmon.msc 中的计数器日志)?

【问题讨论】:

PerfMon 已经能够为任意一组计数器安排以各种格式将日志收集到文件中。 是的,但我没有找到以编程方式执行此操作的方法 【参考方案1】:

在 .NET 中,您必须自己对计数器进行采样并将采样值写入文件。但是,Win32 API 具有执行您想要的功能的功能。有关本机 API 的示例,请参阅 Writing Performance Data to a Log File。您可以尝试使用 p/invoke 调用 API。

【讨论】:

@Louis Rhys:仅当您使用平台调用 (p/invoke) 从托管代码调用 API 或围绕 API 创建托管 C++ 包装器时。 P/invoke 可能更容易,但有些 API 真的很难以这种方式调用。我自己没有尝试过 PDH API。【参考方案2】:

按照另一位发帖人的建议使用 P/Invoke 太麻烦了。我建议使用System.Diagnostics.Process.Start()从命令行运行logman

【讨论】:

以上是关于如何以编程方式记录 PerformanceCounter的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改 root 日志记录级别以进行 logback

如何以编程方式在云工具包中标记可查询的记录类型

如何以编程方式将 HQL 转换为 SQL 查询(不记录)

除了记录集之外,如何以编程方式将项目添加到 ms 访问列表/组合框

如何以编程方式更改 UICollectionView 页脚视图高度

如何以编程方式检测机器人