로그 파일 작업

읽기용 로그 파일을 열려면 PdhOpenQuery 를 호출하고 로그 파일의 경로를 지정합니다. 쓰기용 로그 파일을 열려면 PdhOpenLog를 호출해야 합니다. 로그 파일을 닫려면 로그 파일을 여는 데 사용한 함수에 따라 PdhCloseQuery 또는 PdhCloseLog 를 호출합니다.

로그 파일에서 읽기

로그 파일에서 성능 데이터를 읽는 것은 실시간 원본에서 데이터를 읽는 것과 동일합니다. 쿼리를 열고, 쿼리에 카운터를 추가하고, PdhCollectQueryData 를 호출하여 로그 파일에서 샘플을 수집합니다. PdhCollectQueryData 는 로그 파일의 끝에 도달하면 PDH_NO_MORE_DATA 반환합니다.

로그 파일의 각 샘플에는 원래 수집되어 로그 파일에 기록된 시기에 대한 타임스탬프를 포함합니다. 로그 파일의 첫 번째 및 마지막 샘플에 대한 타임스탬프를 검색하려면 PdhGetDataSourceTimeRange 함수를 호출합니다. 로그에서 읽은 샘플을 특정 시간 범위로 제한하려면 쿼리에 대한 시간 범위 설정을 참조하세요.

로그 파일에 어떤 성능 개체와 카운터가 있는지 모르는 경우 PdhEnumObjects 를 호출하여 개체 목록을 확인할 수 있습니다. 개체가 지정된 경우 PdhEnumObjectItems 또는 PdhExpandWildCardPath 를 호출하여 로그 파일에 포함된 개체의 인스턴스 및 카운터 목록을 검색할 수 있습니다.

PdhEnumObjectItems를 호출하는 경우 instance 및 카운터 목록을 사용하여 instance 카운터의 가능한 각 조합에 대한 경로를 만듭니다. PdhAddCounter를 호출하여 쿼리에 카운터를 추가하면 로그 파일에 지정된 조합이 포함되어 있지 않으면 함수가 실패합니다.

PdhExpandWildCardPath를 사용하는 경우 instance 이름 및 카운터에 대한 와일드카드가 포함된 경로를 만들 수 있습니다(예: \object(*)\*). 개체에 instance 없는 경우 함수는 PDH_INVALID_PATH 반환합니다. 이 경우 카운터에 대해서만 와일드카드를 사용하여 PdhExpandWildCardPath 를 호출합니다(예: \object\*).

최신 운영 체제는 이전 운영 체제에서 생성된 로그 파일을 읽을 수 있습니다. 그러나 Windows Vista 이상 운영 체제에서 만든 로그 파일은 이전 운영 체제에서 읽을 수 없습니다.

로그 파일에서 데이터를 읽는 예제는 로그 파일 에서 성능 데이터 읽기를 참조하세요.

여러 로그 파일에서 읽기

여러 로그 파일에서 읽는 쿼리를 만들어야 하는 경우 PdhBindInputDataSource 를 호출하여 로그 파일을 함께 바인딩합니다. 그런 다음 'H'로 끝나는 PDH 함수(예: PdhOpenQueryH)를 사용해야 합니다.

로그 파일에 쓰기

로그 파일에 쓰기 전에 PdhOpenQuery 를 호출하여 쿼리를 만들고 성능 데이터의 원본(실시간 데이터 또는 로그 파일)을 지정합니다. 그런 다음 쿼리할 카운터를 추가합니다.

대상 파일을 열려면 PdhOpenLog를 호출합니다. 로그 파일을 열 때 쿼리를 지정합니다. 성능 데이터를 수집하고 로그 파일에 쓰려면 PdhUpdateLog를 호출합니다.

카운터 데이터가 쉼표로 구분된(.csv) 또는 탭으로 구분된(.tsv) 로그 파일에 기록되고 경로에 와일드카드 instance 포함된 경우 경로가 확장되고 경로가 확장될 때 존재하는 인스턴스만 로그 파일에 포함됩니다. 그러나 이진(.blg) 또는 SQL 로그 파일의 경우 로그 파일에 로깅 중에 생성된 인스턴스가 포함되도록 와일드카드가 확장되지 않습니다.

로그 파일에 데이터를 쓰는 예제는 로그 파일에 성능 데이터 쓰기를 참조하세요.

로그 파일 압축

PdhComputeCounterStatistics 함수를 사용하여 로그 파일을 압축할 수 있습니다. 예를 들어 로그 파일에서 10개의 레코드를 읽고 PdhComputeCounterStatistics 를 호출하여 평균 값을 계산한 다음, 평균 값을 출력 로그 파일에 씁니다.

다음 항목에서는 로그 파일 사용에 대한 추가 정보를 제공합니다.