Tail using PowerShell
07 Oct 2017| PowerShell
Představte si scénář, kdy diagnostikujete problém na produkčním serveru. Povolíte protokoly a máte vše nastaveno tak, abyste mohli problém reprodukovat. Zařadíte spouštěč do fronty, který vyvolá chybně prováděnou operaci, a nakonec počkáte na aktualizaci souboru protokolu.
Čekat na změnu velikosti souboru protokolu není žádná legrace, stejně jako pravidelné obnovování souboru. Chci být upozorněn v okamžiku, kdy se protokol aktualizuje v reálném čase. Přesně to dělá program jako tail
– sleduje změny v souboru a vypisuje jeho ocásek.
Existuje několik inkarnací ocásku, které tuto práci dělají naprosto v pořádku, ale vzhledem k tomu, že se jedná o produkční prostředí, nedržel jsem se instalace nových nástrojů.
Naštěstí má rutina Get-Content
PowerShell tuto funkci zabudovanou. Nakonec jsem se rozhodl pro tuto kombinaci:
Get-Content log.txt -tail 5 -wait
Argument -tail
přebírá počet řádků, které se mají zobrazit od konce souboru, a -wait
určuje, že má soubor nadále sledovat.
Přiznávám, že tato metoda nemá možnosti zvýrazňování, které by měl specializovaný nástroj, ale je to docela užitečná možnost, kterou lze mít v nouzi k dispozici.
Nakonec ušetříte několik stisků kláves pomocí aliasu:
cat log.txt -tail 5 -wait
Aktualizace 2019-01-30: Nedávno jsem měl požadavek sledovat v souboru nějaký text a pak zaznamenat časové razítko, kdy byl zapsán. Vychází to z tohoto navrženého řešení.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }