Cauda usando PowerShell
07 Out 2017| PowerShell
Considerar um cenário onde você está diagnosticando um problema em um servidor de produção. Você ativou os logs e conseguiu configurar tudo para reproduzir o problema. Enfileirar o gatilho para invocar a operação de mau comportamento e finalmente esperar que o arquivo de log seja atualizado.
Atualizar no tamanho do arquivo de log para alterar não é divertido nem atualizar o arquivo periodicamente. Eu quero ser notificado no momento em que o log for atualizado em tempo real. Isto é exatamente o que um programa como tail
faz – ele monitora o arquivo para alterações e sai o final do arquivo.
Existem algumas encarnações de final que fazem o trabalho perfeitamente bem, mas dado que este era um ambiente de produção eu não estava sempre instalando novas ferramentas.
Felizmente, o Get-Content
PowerShell cmdlet tem esta funcionalidade embutida. Esta é a combinação que finalmente estabeleci:
Get-Content log.txt -tail 5 -wait
O argumento -tail
leva o número de linhas a mostrar a partir do fim do ficheiro e -wait
especifica que deve continuar a monitorizar o ficheiro.
Granted que este método não tem recursos de destaque que uma ferramenta dedicada teria, mas é uma opção bastante útil para ter em um pinch.
Finalmente, salve algumas teclas usando o alias:
cat log.txt -tail 5 -wait
Update 2019-01-30: Recentemente eu tive o requisito de monitorar um arquivo para algum texto e então anotar o carimbo de data de quando ele foi escrito. Ele é baseado nesta solução sugerida.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -como ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }