如何以编程方式记录 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
除了记录集之外,如何以编程方式将项目添加到 ms 访问列表/组合框