Utilisation des fichiers journaux

Pour ouvrir un fichier journal pour la lecture, appelez PdhOpenQuery et spécifiez un chemin d’accès au fichier journal. Pour ouvrir un fichier journal pour l’écriture, vous devez appeler PdhOpenLog. Pour fermer un fichier journal, appelez PdhCloseQuery ou PdhCloseLog en fonction de la fonction que vous avez utilisée pour ouvrir le fichier journal.

Lecture à partir d’un fichier journal

La lecture des données de performances à partir d’un fichier journal est identique à la lecture de données à partir d’une source en temps réel : vous ouvrez une requête, ajoutez des compteurs à la requête et appelez PdhCollectQueryData pour collecter un exemple à partir du fichier journal. PdhCollectQueryData retourne PDH_NO_MORE_DATA lorsque vous atteignez la fin du fichier journal.

Chaque exemple du fichier journal contient un horodatage pour le moment où il a été collecté à l’origine et écrit dans le fichier journal. Pour récupérer l’horodatage pour le premier et le dernier exemple dans le fichier journal, appelez la fonction PdhGetDataSourceTimeRange . Si vous souhaitez limiter les exemples que vous lisez du journal à un intervalle de temps spécifique, consultez Définition d’un intervalle de temps pour une requête.

Si vous ne savez pas quels objets et compteurs de performances existent dans le fichier journal, vous pouvez appeler PdhEnumObjects pour déterminer la liste des objets. En fonction d’un objet, vous pouvez appeler PdhEnumObjectItems ou PdhExpandWildCardPath pour récupérer une liste des instances et compteurs de l’objet contenus dans le fichier journal.

Si vous appelez PdhEnumObjectItems, utilisez les listes d’instances et de compteurs pour créer un chemin d’accès pour chaque combinaison possible d’instance et de compteur. Lorsque vous appelez PdhAddCounter pour ajouter le compteur à la requête, la fonction échoue si le fichier journal ne contient pas la combinaison donnée.

Si vous utilisez PdhExpandWildCardPath, vous pouvez créer un chemin qui contient un caractère générique pour le nom et le compteur de l’instance, par exemple\object(*)\*. La fonction retourne PDH_INVALID_PATH si l’objet ne contient pas d’instance. Dans ce cas, appelez PdhExpandWildCardPath à l’aide d’un caractère générique uniquement pour le compteur, par exemple, \object\*.

Les systèmes d’exploitation plus récents peuvent lire les fichiers journaux générés sur des systèmes d’exploitation plus anciens; toutefois, les fichiers journaux créés sur Windows Vista et les systèmes d’exploitation ultérieurs ne peuvent pas être lus sur les systèmes d’exploitation antérieurs.

Pour obtenir un exemple qui lit des données à partir d’un fichier journal, consultez Lecture des données de performances à partir d’un fichier journal.

Lecture à partir de plusieurs fichiers journaux

Si vous devez créer une requête qui lit à partir de plusieurs fichiers journaux, appelez pdhBindInputDataSource pour lier les fichiers journaux ensemble. Vous devez ensuite utiliser des fonctions PDH qui se terminent par « H », par exemple , PdhOpenQueryH.

Écriture dans un fichier journal

Avant d’écrire dans un fichier journal, appelez PdhOpenQuery pour créer une requête et spécifier la source des données de performances, des données en temps réel ou un fichier journal. Ensuite, ajoutez les compteurs que vous souhaitez interroger.

Pour ouvrir le fichier de destination, appelez PdhOpenLog. Spécifiez la requête lorsque vous ouvrez le fichier journal. Pour collecter les données de performances et l’écrire dans le fichier journal, appelez PdhUpdateLog.

Si les données du compteur sont écrites dans un fichier journal délimité par des virgules (.csv) ou sous forme de tabulation (.tsv) et que le chemin contient une instance générique, le chemin d’accès est développé et uniquement les instances qui existent au moment où le chemin d’accès est développé sont inclus dans le fichier journal. Toutefois, pour les fichiers journaux binaires (.blg) ou SQL, le caractère générique n’est pas développé afin que le fichier journal contient des instances créées lors de la journalisation.

Pour obtenir un exemple qui écrit des données dans un fichier journal, consultez Écriture de données de performances dans un fichier journal.

Compression d’un fichier journal

Vous pouvez utiliser la fonction PdhComputeCounterStatistics pour compresser un fichier journal. Par exemple, lisez dix enregistrements à partir d’un fichier journal, appelez PdhComputeCounterStatistics pour calculer la valeur moyenne, puis écrivez la valeur moyenne dans un fichier journal de sortie.

La rubrique suivante fournit des informations supplémentaires sur l’utilisation d’un fichier journal.