Monitorando arquivos de log com PowerShell

Monitorando arquivos de log com PowerShell

Overview

Já se viu precisando monitorar arquivos de log no Windows e sentiu falta da facilidade do tail -f do Linux? Não se preocupe mais! Este post é um guia rápido e descomplicado sobre como utilizar o PowerShell para tornar essa tarefa tão simples quanto seria no Linux. Seja para visualizar as últimas linhas de um log, as primeiras, ou até mesmo para manter um monitoramento constante de atualizações em tempo real, temos as soluções na medida para você. Prepare-se para transformar o modo como lida com arquivos de log no Windows!

Para monitorar arquivos de log no linux, temos aquele velho conhecido que é o tail -f, mas no windows (obviamente) ele não existe. Todavia, temos o PowerShell, que resolve o problema sem muito esforço. Neste post está o método mais comum de se fazer isso com o PS.

Para fazer com que o PowerShell capture e exiba o conteúdo do arquivo, você pode utilizar o comando abaixo:

Get-Content -path "c:\servicos\serv01\arquivo_de_log.txt"

Este comando vai pegar todas as linhas e exibi-las no console para você. Isso resolve alguns problemas, mas se o arquivo for muito grande? Neste caso, podemos utilizar o argumento -tail para pegar as últimas linhas do arquivo.

Veja o exemplo abaixo:

Get-Content -path "c:\servicos\serv01\arquivo_de_log.txt" -Tail 42

Com este comando, recuperamos as últimas 42 linhas do arquivo de log. Se, por algum acaso, você precisar de recuperar as n primeiras linhas, você pode utilizar o argumento -Head, conforme o exemplo abaixo:

Get-Content -path "c:\servicos\serv01\arquivo_de_log.txt" -Head 10

Neste comando pegamos apenas as 10 primeiras linhas do arquivo.

Tudo isso é bem legal, mas e se eu precisar monitorar o arquivo de log enquanto ele é criado?

Simples! Basta utilizar o argumento -wait:

Get-Content -path "c:\servicos\serv01\arquivo_de_log.txt" -Wait

Com este último comando, o PowerShell irá exibir todas as linhas do arquivo e ficar vigiando por atualizações, exibindo-as assim que elas acontecerem.

Você pode combinar algum dos outros argumentos que mostramos aqui com o wait. Isso é uma boa ideia, especialmente quando trabalhamos com arquivos grandes. Acho interessante ressaltar que você vai receber um erro se tentar misturar o argumento -head e -tail no mesmo comando.

Importante lembrar que se o seu arquivo de log for escrito em “blocos”, ou seja, sua aplicação espera chegar em n linhas para depois efetivar a gravação no arquivo, o console do PS vai ficar parado até que seja efetivada a inclusão de novas linhas.

Mesmo salvando linha a linha, tenho passado por algumas dificuldades com este comando, quando tento monitorar um arquivo que está sendo escrito pelo PowerBuilder. Talvez isso não seja um problema para você. 🙂

Espero ter ajudado.