2010-08-25 14 views
5

Ich verstehe, dass Sie mithilfe von Perfmon.msc einen benutzerdefinierten Leistungsindikator erstellen können, und mithilfe des Leistungsindikatorprotokolls können Sie den Leistungsindikatorwert in eine Textdatei schreiben.So protokollieren Sie PerformanceCounter programmatisch

Ich verstehe auch, ich kann dies auch programmatisch verwenden, indem Sie einen Leistungsindikator erstellen, indem Sie System.Diagnostics.PerformanceCounter verwenden, und erhalten Sie den Zählerwert mit NextValue() Methode. Gibt es eine programmatische Möglichkeit, dem Objekt PerformanceCounter mitzuteilen, dass das Protokoll auch in eine Textdatei geschrieben werden soll (ähnlich wie Counter Log in perfmon.msc)?

+0

PerfMon hat bereits die Möglichkeit, Sammlung von Protokollen zu einer Datei in verschiedenen Formaten für eine beliebige Reihe von Zählern zu planen. – Richard

+0

Ja, aber ich habe keinen programmatischen Weg gefunden –

Antwort

2

Die Verwendung von P/Invoke wie von einem anderen Poster vorgeschlagen, hat zu viele Probleme verursacht. Ich rate logman von der Befehlszeile mit System.Diagnostics.Process.Start()

4

In .NET müssen Sie den Zähler selbst probieren und den abgetasteten Wert in eine Datei schreiben. Die Win32-API verfügt jedoch über Funktionen, um das zu tun, was Sie möchten. Ein Beispiel für die native API finden Sie unter Writing Performance Data to a Log File. Sie könnten versuchen, p/invoke zum Aufruf der API zu verwenden.

+0

können Sie diese Codes in C# .NET schreiben? –

+0

@Louis Rhys: Nur wenn Sie Plattformaufruf (p/invoke) verwenden, um die API aus verwaltetem Code aufzurufen oder einen verwalteten C++ - Wrapper um die API zu erstellen. P/invoke ist wahrscheinlich einfacher, aber einige APIs sind wirklich schwer auf diese Art zu nennen. Ich habe die PDH API selbst nicht ausprobiert. –

Verwandte Themen