
W jaki sposób przeglądać tylko ostatnie wpisy w pliku? Jak wyświetlać tylko ostatnie/nowe wiersze w pliku? Jak automatycznie odświeżać zawartość logu?
Do przeglądania zawartości logów, plików tekstowych najbardziej nadaje się polecenie PowerShell Get-Content, posiada ono stosowne odpowiednie parametry np -last (można używać -tail) tak aby wyświetlać tylko ostatnie wpisy. Przykład takiego kompletnego polecenia które należy ponawiać wygląda tak
Get-Content .\file.log -last 5

wyniki są poprawne jednak klikanie co chwile może trochę zmęczyć użytkownika, dlatego z pomocą przychodzi nam prosty oneliner. Dodajmy parametr -wait oraz wybierzmy obiekty w pętli: dorzucając do tego prefiks NEW. Całość będzie miała postać:Get-Content .\file.log -last 0 -Wait | foreach {"NEW: " + $_ }
a wynik będzie wyglądał tak:

wszystko dzieje się samo, dopóki nie zamkniemy sesji terminala lub zakończymy wykonywanie polecenia poprzez wciśnięcie CTR+C a. Prosto i skutecznie.
Rozbudujmy trochę naszego onlinera i dodajmy kolor tak aby rzucał się w oczy każdy nowy wiersz w przeglądanym przez nas pliku:
Get-Content .\file.log -last 0 -Wait | foreach {(Write-Host "NEW: " -foregroudcolor green -nonewline) + $_ }

Mamy sprawdzony sposób na przeglądanie logów w konsoli. Zamienimy onlinera w funkcje Get-LastEntry – w końcu będziemy z niego często korzystać:
#sprawdzone.it - function Get-LastEntry
#Opis: Funkcja monitoruje plik dziennika i wyświetla nowe wpisy w czasie rzeczywistym
function Get-LastEntry {
param(
[Parameter(Mandatory=$true)]
[string]$logfile
)
Get-Content $logfile -last 0 -Wait | foreach { (Write-Host "NEW: " -ForegroundColor Green -NoNewline) + $_ }
}


Jeżeli mój wpis Ci się spodobał, pomógł w pracy? Chcesz mnie wspierać? Postaw kawę! To dzięki waszemu wsparciu nie ma reklam! Poniżej kod QR do płatności który jest jednocześnie linkiem do PayPal.

