Trabalhando com arquivos de log

Para abrir um arquivo de log para leitura, chame PdhOpenQuery e especifique um caminho para o arquivo de log. Para abrir um arquivo de log para gravação, você deve chamar PdhOpenLog. Para fechar um arquivo de log, chame PdhCloseQuery ou PdhCloseLog , dependendo de qual função você usou para abrir o arquivo de log.

Leitura de um arquivo de log

Ler dados de desempenho de um arquivo de log é o mesmo que ler dados de uma fonte em tempo real– você abre uma consulta, adiciona contadores à consulta e chama PdhCollectQueryData para coletar uma amostra do arquivo de log. PdhCollectQueryData retorna PDH_NO_MORE_DATA quando você chega ao final do arquivo de log.

Cada exemplo no arquivo de log contém um carimbo de data/hora para quando ele foi originalmente coletado e gravado no arquivo de log. Para recuperar o carimbo de data/hora do primeiro e último exemplo no arquivo de log, chame a função PdhGetDataSourceTimeRange . Se você quiser limitar os exemplos lidos do log a um intervalo de tempo específico, consulte Configurando um intervalo de tempo para uma consulta.

Se você não souber quais objetos e contadores de desempenho existem no arquivo de log, você pode chamar PdhEnumObjects para determinar a lista de objetos. Dado um objeto, você pode chamar PdhEnumObjectItems ou PdhExpandWildCardPath para recuperar uma lista das instâncias e contadores do objeto contidos no arquivo de log.

Se você chamar PdhEnumObjectItems, use as listas de instâncias e contadores para criar um caminho para cada combinação possível de instância e contador. Quando você chamar PdhAddCounter para adicionar o contador à consulta, a função falhará se o arquivo de log não contiver a combinação fornecida.

Se você usar PdhExpandWildCardPath, poderá criar um caminho que contenha um curinga para o nome da instância e o contador, por exemplo, \object(*)\*. A função retornará PDH_INVALID_PATH se o objeto não contiver uma instância. Nesse caso, chame PdhExpandWildCardPath usando apenas um curinga para contador, por exemplo, \object\*.

Sistemas operacionais mais recentes podem ler arquivos de log que foram gerados em sistemas operacionais mais antigos; no entanto, os arquivos de log criados no Windows Vista e em sistemas operacionais posteriores não podem ser lidos em sistemas operacionais anteriores.

Para obter um exemplo que lê dados de um arquivo de log, consulte a leitura de dados de desempenho de um arquivo de log.

Leitura de vários arquivos de log

Se você precisar criar uma consulta que leia de vários arquivos de log, chame o PdhBindInputDataSource para associar os arquivos de log. Em seguida, você precisa usar funções PDH que terminam em 'H', por exemplo, PdhOpenQueryH.

Gravando em um arquivo de log

Antes de gravar em um arquivo de log, chame PdhOpenQuery para criar uma consulta e especificar a origem dos dados de desempenho, dados em tempo real ou um arquivo de log. Em seguida, adicione os contadores que você deseja consultar.

Para abrir o arquivo de destino, chame PdhOpenLog. Especifique a consulta ao abrir o arquivo de log. Para coletar os dados de desempenho e gravá-los no arquivo de log, chame PdhUpdateLog.

Se os dados do contador estiverem sendo gravados no arquivo de log delimitado por vírgula (.csv) ou delimitado por tabulação (.tsv) e o caminho contiver uma instância curinga, o caminho será expandido e somente as instâncias existentes no momento em que o caminho for expandido serão incluídas no arquivo de log. No entanto, para arquivos de log binários (.blg) ou SQL, o curinga não é expandido para que o arquivo de log contenha instâncias criadas durante o registro em log.

Para obter um exemplo que grava dados em um arquivo de log, consulte Gravando dados de desempenho em um arquivo de log.

Compactando um arquivo de log

Você pode usar a função PdhComputeCounterStatistics para compactar um arquivo de log. Por exemplo, leia dez registros de um arquivo de log, chame PdhComputeCounterStatistics para calcular o valor médio e, em seguida, escreva o valor médio em um arquivo de log de saída.

O tópico a seguir fornece informações adicionais sobre como usar um arquivo de log.