Chciałbym móc dopasować dane wyjściowe pliku dziennika serwera zawierającego komunikaty takie jak:
INFO
SEVERE
itd., a jeśli tak SEVERE
, pokaż linię na czerwono; jeśli jest INFO
w kolorze zielonym. Jaki alias mogę ustawić dla tail
polecenia, które pomogłoby mi to zrobić?
command-line
colors
alias
highlighting
tail
Amir Afghani
źródło
źródło
sed
: stackoverflow.com/a/14691971/52074Odpowiedzi:
Wypróbuj multitail . To jest übergeneralizacja
tail -f
. Możesz oglądać wiele plików w osobnych oknach, wyróżniać linie na podstawie ich zawartości i nie tylko.Kolory są konfigurowalne. Jeśli domyślny schemat kolorów nie działa, napisz swój własny w pliku konfiguracyjnym. Na przykład zadzwoń
multitail -cS amir_log /path/to/log
w następujący sposób~/.multitailrc
:Innym rozwiązaniem, jeśli korzystasz z serwera, na którym instalowanie niestandardowych narzędzi jest niewygodne , to połączenie go
tail -f
z sed lub awk w celu dodania sekwencji kontrolnych wyboru koloru. Wymagatail -f
to bezzwłocznego opróżnienia standardowego wyjścia, nawet jeśli standardowym wyjściem jest potok, nie wiem czy wszystkie implementacje to robią.lub z sed
Jeśli twój sed nie jest GNU sed, zastąp
\o033
go dosłownie znakiem ucieczki i usuń--unbuffered
.Jeszcze inną możliwością jest uruchomienie
tail -f
w buforze powłoki Emacsa i użycie zdolności kolorowania składni Emacsa.źródło
sed
? (Przepraszam, że jestem leniwy i sam tego nie rozumiem!) Ale czy mógłbyś również dodaćsed
przykład.tail -f
zawk
kodem, jeśli ciąg nie zawiera INFO i SEVERE , łańcuch nie jest drukowany. Jak mogę wydrukować pozostałe ciągi? (Sznurek nie musi być zabarwiony); next
przed nawiasami zamykającymi, aby pominąć dalsze przetwarzanie, i nową linię przetwarzania1 {print}
na końcu (1
zawsze oznacza).sed --unbuffered -e 's/\(.*FATAL.*\)/\o033[1;31m\1\o033[0;39m/' -e 's/\(.*ERROR.*\)/\o033[31m\1\o033[39m/' -e 's/\(.*WARN.*\)/\o033[33m\1\o033[39m/' -e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' -e 's/\(.*DEBUG.*\)/\o033[34m\1\o033[39m/' -e 's/\(.*TRACE.*\)/\o033[30m\1\o033[39m/' -e 's/\(.*[Ee]xception.*\)/\o033[1;39m\1\o033[0;39m/'
grc , ogólny kolorysta jest całkiem fajny.
Po prostu zrób
i baw się dobrze!
Znajdziesz go również na GitHub .
źródło
Czy oglądałeś ccze ? Istnieje możliwość dostosowania domyślnych kolorów niektórych słów kluczowych za pomocą opcji
-c
lub bezpośrednio w pliku konfiguracyjnym. Jeśli ekran jest wyczyszczony po kolorowaniu, musisz użyć opcji-A
.Edytować:
Jeśli naprawdę chcesz mieć całą linię w kolorze czerwonym, możesz również spróbować:
\e[1;31m
da ci czerwony kolor. Jeśli chcesz żółty, użyj\e[1;33m
i do zielonego\e[1;32m
.\e[0m
Przywraca normalny kolor tekstu.źródło
\007
do końca regex, tak:perl -pe 's/(ERROR)/\033[31m$1\033[0m\007/g;'
. Działa to niesamowicie, jeśli używasz tmux zset -g bell-action any
, w którym to przypadku, jeśli masz logowanie do dziennika w innym oknie, nazwa tego okna będzie ostrzegać, gdy wyrażenie regularne znajdzie dopasowanie.Spójrz na lnav , zaawansowaną przeglądarkę plików dziennika.
Może także ładnie drukować różne formaty.
Przed:
Po:
źródło
Możesz użyć tęczy , która koloruje linie na podstawie wyrażeń regularnych:
Jest również dostarczany z predefiniowanymi konfiguracjami , na przykład dla dzienników Tomcat:
(wyłączenie odpowiedzialności: Jestem autorem)
źródło
rainbow
jest niesamowite. Czy jesteś autorem? Jeśli tak, edytuj swoją odpowiedź za pomocą tego atrybucji.Możesz użyć colortail :
źródło
apt install colortail
i powinien on działać bez edycji ~ / .colortail /.Zauważ też, że jeśli chcesz po prostu znaleźć jeden pasujący regex, GNU grep z
--color
zadziała - po prostu prześlijtail
przez niego wynik.źródło
grep -A9999 -B9999
regex
, pokaże wszystkie linie, chyba że masz 10 000 niepasujących wierszy z rzędu. Użyj czegoś w rodzaju,GREP_COLORS="ms=31:sl=33:cx=32" grep -A9999 -B9999 SEVERE
aby wyświetlić słowoSEVERE
na czerwono, pozostałe ZNAKOMITE linie na żółto, a wszystkie inne (nie ZNAKOMIE) linie (do 9999) na zielono.--color=always
do grep zamiast po prostu--color
, w zależności od kolejności twojej rury, ale tak, to działa ogon (GNU coreutils) 8.27 zainstalowany na moim urządzeniu.Aby uzyskać kolorowe wyjście ze standardowych poleceń, takich jak
grep
, powinieneś ustawić toalias
w swoim.bashrc
kiedy grepujesz coś w swoim pliku, widzisz coś takiego (ale prawdopodobnie na czerwono):
jeśli chcesz użyć
tail
lubawk
chcesz, aby kolor przetrwał w rurze, alias nie jest wystarczający i powinieneś użyć--color=always
parametru, na przykład:Jeśli chcesz, aby kolorowy tekst z
awk
historią był nieco złożony, ale bardziej wydajny, na przykład:z każdą linią we własnym kolorze.
Istnieje wiele innych sposobów na uzyskanie kolorowego tekstu z powłoki za pomocą innych narzędzi i są one dobrze opisane przez innych członków.
źródło
Bardzo lubię colorex . Proste, ale satysfakcjonujące.
źródło
Opierając się na odpowiedzi @uloBasEI, próbowałem użyć
... | perl ... | perl ...
, ale potok Linux trochę zwariował i jest zbyt wolny. Jeśli umieściłem wszystkie reguły w jednymperl
poleceniu, to działa dobrze.Na przykład utwórz
perl
plik colorTail.pl jak poniżej:Użyj go jako:
UWAGA: możesz używać go również w MobaXTerm ! Wystarczy pobrać
perl
wtyczkę ze strony MobaXTerm .źródło
źródło
source-highlight
nie jest powszechnie instalowanym poleceniem, więc powinieneś przynajmniej podać link do strony projektu.Jednym z rozwiązań, które działa do kolorowania wszelkiego rodzaju tekstu, nie tylko plików dziennika, jest narzędzie Pythona „ colout ”.
Gdzie dowolny tekst na wyjściu „myprocess”, który pasuje do grupy 1 wyrażenia regularnego, będzie pokolorowany kolorem 1, grupa 2 kolorem 2 itd.
Na przykład:
tzn. pierwsza grupa wyrażeń regularnych (parens) odpowiada początkowej dacie w pliku dziennika, druga grupa odpowiada nazwie pliku python, numerowi wiersza i nazwie funkcji, a trzecia grupa odpowiada późniejszemu komunikatowi dziennika. To wygląda jak:
Zauważ, że linie lub części linii, które nie pasują do żadnego z moich wyrażeń regularnych, są nadal powtarzane, więc to nie jest jak „grep - kolor” - nic nie jest odfiltrowywane z wyniku.
Oczywiście jest to na tyle elastyczne, że można go używać z dowolnym procesem, nie tylko dostosowywaniem plików dziennika. Zwykle robię nowe wyrażenie regularne w locie za każdym razem, gdy chcę coś pokolorować. Z tego powodu wolę narzędzie colout niż dowolne niestandardowe narzędzie do kolorowania plików dziennika, ponieważ muszę nauczyć się tylko jednego narzędzia, niezależnie od tego, co koloruję: rejestrowanie, testowanie danych wyjściowych, podświetlanie składni fragmentów kodu w terminalu itp.
źródło
Bezwstydna wtyczka: napisałem narzędzie o nazwie TxtStyle, które robi coś podobnego do wspomnianych wcześniej opcji. Możesz uruchomić go w następujący sposób:
Możesz także zdefiniować nazwane style w pliku konfiguracyjnym (
~/.txts.conf
) i używać go w następujący sposób:(
ifconfig
styl jest zdefiniowany po wyjęciu z pudełka)źródło
Napisałem funkcję bash, która akceptuje do trzech parametrów i robi filtr typu grep na pliku tekstowym i wyświetla tekst na ekranie w kolorze.
Chciałbym również zobaczyć funkcję ogona, która by to zrobiła, ale jeszcze jej nie znalazłem.
Tę funkcję można również ulepszyć - byłbym wdzięczny za wszelką pomoc, jak ją ulepszyć.
źródło
pewnie !
Długo pisałem funkcję o nazwie „egrepi”, opartą na 8 definicjach zmiennych kolorów. Działa TYLKO w potokach jak funkcja w kolorze „tail-f”.
1. setColors
po pierwsze funkcja zmiennych kolorów, którą należy wywołać na początku:
2. egrepi
oraz funkcja egrepi, skuteczna i elegancka: przełączanie kolorów między 8 lub więcej kolorami (twoje potrzeby) ORAZ przetestowane w 3 różnych systemach operacyjnych UNIX z komentarzami:
3. Wykorzystanie
polecenie | egrepi word1 .. wordN
źródło
Możesz także rzucić okiem na zegarek :
tail -f /var/log/syslog | lwatch --input -
źródło
grc na pewno!
dostosuj swoje kolektory za pomocą wyrażenia regularnego w pliku: ~ .grc / conf.tail (lub dowolną inną nazwę)
wiersz poleceń:
wyniki:
informacje na temat konfigurowania grc: https://github.com/manjuraj/config/blob/master/.grc/sample.conf
źródło
Jeśli chodzi o kody kolorów, użyłbym tput:
Zobacz w celach informacyjnych:
man tput
Następnie:
źródło
Publikuje jakiś czas temu narzędzie Node Js - log-color-highlight
źródło