如何以编程方式记录PerformanceCounter

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

PerfMon已经具备了在各种格式中将日志收集调度到文件的能力,适用于任意一组计数器。 - Richard
是的,但我没有找到以编程方式实现那个的方法。 - Louis Rhys
2个回答

4

在.NET中,您需要自己对计数器进行采样,并将采样值写入文件。然而,Win32 API有函数可以实现您想要的功能。有关本机API的示例,请参见将性能数据写入日志文件。您可以尝试使用p/invoke调用API。


@Louis Rhys:只有在使用平台调用(p/invoke)从托管代码调用API或创建一个托管C++包装器来调用API时才需要。P/invoke可能更容易,但某些API以这种方式调用确实很困难。我自己还没有尝试过PDH API。 - Martin Liversage

2
使用另一位用户建议的P/Invoke会带来很多麻烦。我建议使用命令行运行 logman,并使用System.Diagnostics.Process.Start()。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接