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 entspricht dem Lesen von Daten aus einer Echtzeitquelle– Sie öffnen eine Abfrage, fügen Der Abfrage Zähler 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 sie ursprünglich gesammelt und in die Protokolldatei geschrieben wurde. Rufen Sie zum Abrufen des Zeitstempels für das erste und letzte Beispiel in der Protokolldatei die Funktion PdhGetDataSourceTimeRange auf. Wenn Sie die Beispiele einschränken möchten, die Sie aus dem Protokoll auf einen bestimmten Zeitraum lesen möchten, lesen Sie das Festlegen eines Zeitraums 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 ermitteln. Angesichts eines Objekts 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 Instanz- und Zählerlisten, um einen Pfad für jede mögliche Kombination aus Instanz und Zähler zu erstellen. Wenn Sie PdhAddCounter aufrufen, um der Abfrage den Zähler hinzuzufügen, schlägt die Funktion fehl, wenn die Protokolldatei die angegebene Kombination nicht enthält.

Wenn Sie PdhExpandWildCardPath verwenden, können Sie einen Pfad erstellen, der einen Platzhalter für den Instanznamen und den Zähler 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 mit einer Wildcard nur für Zähler auf, z. B. \object\*.

Neuere Betriebssysteme können Protokolldateien lesen, die auf älteren Betriebssystemen generiert wurden; Protokolldateien, die auf Windows Vista und späteren Betriebssystemen erstellt wurden, können jedoch nicht auf 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 die PdhBindInputDataSource auf, um die Protokolldateien miteinander zu binden. Anschließend müssen Sie PDH-Funktionen verwenden, die in "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 PdhUpdateLog auf, um die Leistungsdaten zu erfassen und in die Protokolldatei zu schreiben.

Wenn die Gegendaten in durch Trennzeichen getrennte (.csv) oder tabdelimitierte Protokolldatei (TSV) geschrieben werden und der Pfad eine Wildcardinstanz enthält, wird der Pfad erweitert, und nur diese Instanzen, die zum Zeitpunkt des Erweiterns des Pfads vorhanden sind, werden in der Protokolldatei enthalten. Bei binärdateien (Blg) oder SQL Protokolldateien wird die Wildcard 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 Funktion PdhComputeCounterStatistics 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 dann den Mittelwert in eine Ausgabeprotokolldatei zu schreiben.

Im folgenden Thema finden Sie weitere Informationen zur Verwendung einer Protokolldatei.