2010-08-25 21 views
5

Je comprends qu'en utilisant Perfmon.msc vous pouvez créer un compteur de performance personnalisé et en utilisant le journal de compteur, vous pouvez écrire la valeur du compteur dans un fichier texte. Je comprends aussi que je peux aussi utiliser ce programme en créant un compteur de performance en utilisant System.Diagnostics.PerformanceCounter, et obtenir la valeur du compteur en utilisant la méthode NextValue(). Existe-t-il une méthode de programmation pour indiquer à l'objet PerformanceCounter d'écrire le journal dans un fichier texte (similaire à Counter Log in perfmon.msc)?Comment enregistrer logiquement PerformanceCounter

+0

PerfMon a déjà la possibilité de planifier la collecte de journaux dans un fichier dans différents formats, pour un ensemble arbitraire de compteurs. – Richard

+0

oui, mais je n'ai pas trouvé un moyen de le faire par programme –

Répondre

2

L'utilisation de P/Invoke comme suggéré par une autre affiche posait trop de problèmes. Je suggère d'exécuter logman à partir de la ligne de commande en utilisant System.Diagnostics.Process.Start()

4

Dans .NET, vous devrez échantillonner vous-même le compteur et écrire la valeur échantillonnée dans un fichier. Cependant, l'API Win32 a des fonctions pour faire ce que vous voulez. Pour un exemple de l'API native, voir Writing Performance Data to a Log File. Vous pouvez essayer d'utiliser p/invoke pour appeler l'API.

+0

pouvez-vous écrire ces codes en C# .NET? –

+0

@Louis Rhys: uniquement si vous utilisez l'appel de plate-forme (p/invoke) pour appeler l'API à partir du code managé ou créer un wrapper C++ géré autour de l'API. P/invoke est probablement plus facile, mais certaines API sont vraiment difficiles à appeler de cette façon. Je n'ai pas essayé l'API PDH moi-même. –