2010-08-25 5 views
5

Я понимаю, что с помощью Perfmon.msc вы можете создать собственный счетчик производительности и используя журнал счетчиков, вы можете записать значение счетчика в текстовый файл.Как запрограммировать журнал PerformanceCounter

Я также понимаю, что я также могу использовать это программно, создав счетчик производительности с помощью System.Diagnostics.PerformanceCounter и получив значение счетчика с помощью метода NextValue(). Есть ли программный способ сообщить объекту PerformanceCounter для записи журнала в текстовый файл тоже (аналогично счету счетчика perfmon.msc)?

+0

PerfMon уже имеет возможность планировать сбор журналов в файл в различных форматах для произвольного набора счетчиков. – Richard

+0

да, но я не нашел способ сделать это программно –

ответ

2

Использование P/Invoke, предложенное другим плакатом, дало слишком много проблем. Я предлагаю запустить logman из командной строки, используя System.Diagnostics.Process.Start()

4

В .NET вам придется самостоятельно пробовать счетчик и записать дискретизированное значение в файл. Однако, Win32 API имеет функции, чтобы делать то, что вы хотите. Например, для примера API-интерфейса native см. Writing Performance Data to a Log File. Вы можете попробовать использовать p/invoke для вызова API.

+0

вы можете написать эти коды в C# .NET? –

+0

@Louis Rhys: Только если вы используете платформу invoke (p/invoke), чтобы вызвать API из управляемого кода или создать управляемую C++-оболочку вокруг API. P/invoke, вероятно, проще, но некоторые API очень трудно назвать таким образом. Я сам не пробовал API PDH. –