Rejestruj logi i używaj grep, aby wykluczyć określone linie


-1

Mam ten wiersz, który pojawia się co minutę w moim pliku dziennika:

2016-03-29 21:52:46,226 INFO     200 GET /api/ping (0.0.0.0) 0.34ms

Chcę tailten plik dziennika bez pokazywania tych linii.

Próbowałem:

tail -f log.txt | grep -v "ping"

Czy masz na myśli, że to, czego próbowałeś, nie działa?
Sébastien VALSEMEY

1
Rozwiązanie zostało napisane kilka razy w kontekście innych poleceń powłoki. Powinieneś poszukać „stdbuf” w prawym górnym rogu tej strony.
Gombai Sándor

Jaki jest problem? Po prostu spróbowałem tego na moim komputerze i działa zgodnie z oczekiwaniami. echo "..GET /api/ping (0.." | grep -v "ping"yelids 1 wynik bez meczów.
Matt Clark

Funkcja echa @MattClark jest łatwa, ponieważ jej wyjście jest zakończone i opróżnione. Ciągła rura oznacza buforowanie, które zwykle jest przyjacielem, ale gdy czekanie na wypełnienie bufora i spłukanie oznacza wpływ na proces, jest to brzydki wróg. Na szczęście można go oswoić za pomocą stdbuf spośród kilku opcji.
Gombai Sándor

nawet nadal, tail -n 0 -f test | grep -v "ping"a uruchomienie tego w innym terminalu echo "..GET /api/ping (0.." >> testnadal nie powoduje wyjścia. Przetestowałem to na 4 różnych dystrybucjach unixowych i cygwin na Windows. Wszystkie mają takie samo oczekiwane zachowanie.
Matt Clark

Odpowiedzi:


0

Możesz zrobić coś takiego:

tail -F ~/Your.log | while read LINE;do

if [[ ! "$LINE" =~ "ping" ]]; then

   echo $LINE 

done
fi
done
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.