Tail using PowerShell
07 Oct 2017| PowerShell
Rozważmy scenariusz, w którym diagnozujemy problem na serwerze produkcyjnym. Włączyłeś logi i masz wszystko skonfigurowane, aby odtworzyć problem. Kolejkuj wyzwalacz, aby wywołać nieprawidłowo działającą operację i w końcu czekaj na aktualizację pliku dziennika.
Gapienie się na zmianę rozmiaru pliku dziennika nie jest przyjemne, podobnie jak okresowe odświeżanie pliku. Chcę być powiadamiany w momencie, gdy dziennik zostanie zaktualizowany w czasie rzeczywistym. To jest dokładnie to, co robi program taki jak tail
– monitoruje plik pod kątem zmian i wyprowadza ogon pliku.
Istnieje kilka wcieleń ogona, które wykonują pracę doskonale, ale biorąc pod uwagę, że było to środowisko produkcyjne, nie byłem na bieżąco z instalowaniem nowych narzędzi.
Na szczęście cmdlet Get-Content
PowerShell ma wbudowaną tę funkcjonalność. To jest combo, na którym ostatecznie się skupiłem:
Get-Content log.txt -tail 5 -wait
Argument -tail
przyjmuje liczbę linii do pokazania od końca pliku i -wait
określa, że powinien kontynuować monitorowanie pliku.
Przyznaje, że ta metoda nie ma możliwości podświetlania, które miałoby dedykowane narzędzie, ale to całkiem przydatna opcja do posiadania w szczypcie.
Wreszcie, zaoszczędź kilka uderzeń klawiszy, używając aliasu:
cat log.txt -tail 5 -wait
Update 2019-01-30: Niedawno miałem wymóg monitorowania pliku pod kątem jakiegoś tekstu, a następnie odnotowania znacznika czasu, kiedy został napisany. Jest on oparty na tym sugerowanym rozwiązaniu.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }