Arbeiten mit Protokolldateien

Um eine Protokolldatei zum Lesen zu öffnen, rufen Sie PdhOpenQuery auf, und geben Sie einen Pfad zur Protokolldatei an. Zum Öffnen einer Protokolldatei zum Schreiben 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 erfasst 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 Beispiele, die Sie aus dem Protokoll lesen, auf einen bestimmten Zeitbereich beschränken möchten, lesen Sie 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 PdhEnumObjectItems aufrufen, verwenden Sie die instance- und Leistungsindikatorenlisten, um einen Pfad für jede mögliche Kombination aus instance und Zähler zu erstellen. Wenn Sie PdhAddCounter aufrufen, um den Zähler zur Abfrage hinzuzufügen, schlägt die Funktion fehl, wenn die Protokolldatei nicht die angegebene Kombination enthält.

Wenn Sie PdhExpandWildCardPath verwenden, können Sie einen Pfad erstellen, der einen Platzhalter für den instance Namen und den Zähler enthält, z. B. \object(*)\*. Die Funktion gibt PDH_INVALID_PATH zurück, wenn das Objekt keine instance enthält. Rufen Sie in diesem Fall PdhExpandWildCardPath mit einem Platzhalter nur für den Zähler auf, z. B. \object\*.

Neuere Betriebssysteme können Protokolldateien lesen, die unter älteren Betriebssystemen generiert wurden; Protokolldateien, die unter Windows Vista und höheren Betriebssystemen erstellt wurden, können jedoch nicht unter früheren Betriebssystemen 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 miteinander 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 Indikatoren 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 PdhUpdateLog auf, um die Leistungsdaten zu sammeln und in die Protokolldatei zu schreiben.

Wenn die Zählerdaten in die Protokolldatei mit Trennzeichen (.csv) oder tabulatortrennzeichen (TSV) geschrieben werden und der Pfad einen Instance enthält, wird der Pfad erweitert, und nur die Instanzen, die zum Zeitpunkt des Erweiterns des Pfads vorhanden sind, werden in die Protokolldatei eingeschlossen. Bei binären Dateien (BLG) oder SQL-Protokolldateien wird der Feldhalter 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.