Tail using PowerShell
07 Oct 2017| PowerShell
Considere un escenario en el que está diagnosticando un problema en un servidor de producción. Ha habilitado los registros y tiene todo configurado para reproducir el problema. Ponga en cola el desencadenante para invocar la operación que se comporta mal y, finalmente, espere a que el archivo de registro se actualice.
Mirar cómo cambia el tamaño del archivo de registro no es divertido ni tampoco lo es refrescar el archivo periódicamente. Quiero ser notificado en el momento en que el registro se actualiza en tiempo real. Esto es exactamente lo que un programa como tail
hace – monitorea el archivo para los cambios y las salidas de la cola del archivo.
Hay algunas encarnaciones de la cola por ahí que hacen el trabajo perfectamente bien, pero dado que este era un entorno de producción que no era mantener sobre la instalación de nuevas herramientas.
Por suerte, el Get-Content
PowerShell cmdlet tiene esta funcionalidad incorporada. Esta es la combinación con la que finalmente me decidí:
Get-Content log.txt -tail 5 -wait
El argumento -tail
toma el número de líneas a mostrar desde el final del archivo y -wait
especifica que debe seguir monitorizando el archivo.
Se admite que este método no tiene las capacidades de resaltado que tendría una herramienta dedicada, pero es una opción bastante útil para tener en un apuro.
Por último, ahorra algunas pulsaciones de teclas utilizando el alias:
cat log.txt -tail 5 -wait
Actualización 2019-01-30: Recientemente tuve el requerimiento de monitorear un archivo para algún texto y luego anotar la marca de tiempo de cuando fue escrito. Se basa en esta solución sugerida.
cat.\Nprocessed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }