Monitorando arquivos de log com PowerShell

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.

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in .Net, Dev and tagged , , , , , , , , , .