Arbeiten mit Protokolldateien
Um eine Protokolldatei zum Lesen zu öffnen, rufen Sie PdhOpenQuery auf, und geben Sie einen Pfad zur Protokolldatei an. Um eine Protokolldatei zum Schreiben zu öffnen, müssen Sie PdhOpenLog aufrufen. Um eine Protokolldatei zu schließen, rufen Sie entweder PdhCloseQuery oder PdhCloseLog auf, je nachdem, welche Funktion Sie zum Öffnen der Protokolldatei verwendet haben.
Lesen aus einer Protokolldatei
Das Lesen von Leistungsdaten aus einer Protokolldatei ist identisch mit dem Lesen von Daten aus einer Echtzeitquelle. Sie öffnen eine Abfrage, fügen der Abfrage Leistungsindikatoren hinzu und rufen PdhCollectQueryData auf, um ein Beispiel aus der Protokolldatei zu sammeln. PdhCollectQueryData gibt PDH NO MORE DATA zurück, wenn _ Sie das Ende der _ _ Protokolldatei erreichen.
Jedes Beispiel in der Protokolldatei enthält einen Zeitstempel für den Zeitpunkt, zu dem es ursprünglich gesammelt und in die Protokolldatei geschrieben wurde. Um den Zeitstempel für das erste und letzte Beispiel in der Protokolldatei abzurufen, rufen Sie die PdhGetDataSourceTimeRange-Funktion auf. Wenn Sie die aus dem Protokoll gelesenen Beispiele auf einen bestimmten Zeitbereich beschränken möchten, finden Sie weitere Informationen unter Festlegen eines Zeitbereichs für eine Abfrage.
Wenn Sie nicht wissen, welche Leistungsobjekte und Leistungsindikatoren in der Protokolldatei vorhanden sind, können Sie PdhEnumObjects aufrufen, um die Liste der Objekte zu bestimmen. Bei einem Objekt können Sie entweder PdhEnumObjectItems oder PdhExpandWildCardPath aufrufen, um eine Liste der Instanzen und Leistungsindikatoren des Objekts abzurufen, die in der Protokolldatei enthalten sind.
Wenn Sie PdhEnumObjectItemsaufrufen, verwenden Sie die Instanz- und Leistungsindikatorlisten, um einen Pfad für jede mögliche Kombination aus Instanz und Indikator zu erstellen. Wenn Sie PdhAddCounter aufrufen, um den Zähler zur Abfrage hinzuzufügen, ist die Funktion nicht in der Angegebenen Kombination enthalten.
Wenn Sie PdhExpandWildCardPathverwenden, können Sie einen Pfad erstellen, der einen Platzhalter für den Instanznamen und den Leistungsindikator enthält, z. B. \ object( * ) \ * . Die Funktion gibt PDH _ INVALID _ PATH zurück, wenn das Objekt keine -Instanz enthält. Rufen Sie in diesem Fall PdhExpandWildCardPath mithilfe eines Platzhalters nur für den Indikator auf, z. B. \ objekt \ * .
Neuere Betriebssysteme können Protokolldateien lesen, die unter älteren Betriebssystemen generiert wurden. Protokolldateien, die unter den Betriebssystemen Windows Vista und höher erstellt wurden, können jedoch unter früheren Betriebssystemen nicht gelesen werden.
Ein Beispiel zum Lesen von Daten aus einer Protokolldatei finden Sie unter Lesen von Leistungsdaten aus einer Protokolldatei.
Lesen aus mehreren Protokolldateien
Wenn Sie eine Abfrage erstellen müssen, die aus mehreren Protokolldateien liest, rufen Sie PdhBindInputDataSource auf, um die Protokolldateien zu binden. Anschließend müssen Sie PDH-Funktionen verwenden, die auf "H" enden, z. B. PdhOpenQueryH.
Schreiben in eine Protokolldatei
Rufen Sie vor dem Schreiben in eine Protokolldatei PdhOpenQuery auf, um eine Abfrage zu erstellen und die Quelle der Leistungsdaten anzugeben, entweder Echtzeitdaten oder eine Protokolldatei. Fügen Sie dann die Leistungsindikatoren hinzu, die Sie abfragen möchten.
Um die Zieldatei zu öffnen, rufen Sie PdhOpenLog auf. Geben Sie die Abfrage an, wenn Sie die Protokolldatei öffnen. Rufen Sie PdhUpdateLogauf, um die Leistungsdaten zu sammeln und in die Protokolldatei zu schreiben.
Wenn die Indikatordaten in eine durch Trennzeichen getrennte (.csv) oder tabstoppgetrennte Protokolldatei (TSV) geschrieben werden und der Pfad eine Platzhalterinstanz enthält, wird der Pfad erweitert, und nur die Instanzen, die zum Zeitpunkt der Erweiterung des Pfads vorhanden sind, werden in die Protokolldatei aufgenommen. Für binäre (BLG)- oder SQL-Protokolldateien wird der Platzhalter jedoch nicht erweitert, sodass die Protokolldatei Instanzen enthält, die während der Protokollierung erstellt werden.
Ein Beispiel zum Schreiben von Daten in eine Protokolldatei finden Sie unter Schreiben von Leistungsdaten in eine Protokolldatei.
Komprimieren einer Protokolldatei
Sie können die PdhComputeCounterStatistics-Funktion verwenden, um eine Protokolldatei zu komprimieren. Lesen Sie beispielsweise zehn Datensätze aus einer Protokolldatei, rufen Sie PdhComputeCounterStatistics auf, um den Mittelwert zu berechnen, und schreiben Sie dann den Mittelwert in eine Ausgabeprotokolldatei.
Das folgende Thema enthält zusätzliche Informationen zur Verwendung einer Protokolldatei.