Saya ingin dapat mengeklik keluaran file log server yang memiliki pesan seperti:
INFO
SEVERE
dll, dan jika itu SEVERE
, tunjukkan garis berwarna merah; jika INFO
berwarna hijau. Jenis alias apa yang dapat saya siapkan untuk tail
perintah yang akan membantu saya melakukan ini?
command-line
colors
alias
highlighting
tail
Amir Afghani
sumber
sumber
sed
: stackoverflow.com/a/14691971/52074Jawaban:
Coba multitail . Ini adalah liberalisasi dari
tail -f
. Anda dapat menonton banyak file di jendela terpisah, menyorot garis berdasarkan kontennya, dan banyak lagi.Warnanya dapat dikonfigurasi. Jika skema warna default tidak berfungsi untuk Anda, tulis sendiri di file konfigurasi. Misalnya, panggilan
multitail -cS amir_log /path/to/log
dengan yang berikut ini~/.multitailrc
:Solusi lain, jika Anda menggunakan server yang merepotkan untuk menginstal alat yang tidak standar , adalah menggabungkan
tail -f
dengan sed atau awk untuk menambahkan urutan kontrol pemilihan warna. Ini membutuhkantail -f
untuk menyiram output standarnya tanpa penundaan bahkan ketika output standarnya adalah sebuah pipa, saya tidak tahu apakah semua implementasi melakukan ini.atau dengan sed
Jika sed Anda bukan GNU sed, gantikan
\o033
dengan karakter escape literal dan hapus--unbuffered
.Namun kemungkinan lain adalah untuk menjalankan
tail -f
dalam buffer shell Emacs dan menggunakan kemampuan pewarnaan sintaks Emacs.sumber
sed
? (maaf karena malas dan tidak memikirkannya sendiri!) Tapi tolong tambahkansed
contoh juga.tail -f
with Andaawk
, jika sebuah string tidak memiliki INFO dan SEVERE , string tersebut tidak akan dicetak. Bagaimana saya bisa mencetak string yang tersisa ? (Tali tidak perlu diwarnai); next
sebelum kawat gigi penutup untuk melewati pemrosesan lebih lanjut, dan baris pemrosesan baru1 {print}
di akhir (1
artinya selalu).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 , pewarna generik cukup keren.
Kerjakan saja
dan nikmati!
Anda juga akan menemukannya di GitHub .
sumber
Pernahkah Anda melihat ccze ? Anda memiliki kemungkinan untuk menyesuaikan warna default beberapa kata kunci menggunakan opsi
-c
atau langsung di file konfigurasi Anda. Jika layar Anda kosong setelah pewarnaan, Anda harus menggunakan opsi-A
.Sunting:
Jika Anda benar-benar ingin garis lengkap diwarnai merah, Anda juga bisa mencoba yang berikut ini:
\e[1;31m
akan memberi Anda warna merah. Jika Anda ingin warna kuning, gunakan\e[1;33m
, dan untuk penggunaan hijau\e[1;32m
. The\e[0m
mengembalikan warna teks normal.sumber
\007
ke akhir regex, seperti:perl -pe 's/(ERROR)/\033[31m$1\033[0m\007/g;'
. Ini berfungsi luar biasa jika Anda menggunakan tmux denganset -g bell-action any
, dalam hal ini jika Anda memiliki log tailing di jendela lain, nama jendela itu akan mengingatkan setiap kali regex menemukan kecocokan.Lihatlah lnav , penampil file log tingkat lanjut.
Itu juga bisa mencetak berbagai format.
Sebelum:
Setelah:
sumber
Anda dapat menggunakan pelangi , yang mewarnai garis berdasarkan ekspresi reguler:
Itu juga dibundel dengan konfigurasi yang telah ditetapkan , misalnya untuk log Tomcat:
(penafian: saya penulis)
sumber
rainbow
Mengagumkan. Apakah Anda penulisnya? Jika demikian, harap edit jawaban Anda dengan atribusi itu.Anda dapat menggunakan colortail :
sumber
apt install colortail
dan itu akan berfungsi tanpa mengedit ~ / .colortail / juga.Juga perhatikan bahwa jika Anda hanya ingin mencari satu regex yang cocok, GNU grep with
--color
akan berfungsi - cukup kirimkantail
output Anda melalui itu.sumber
grep -A9999 -B9999
regex
, itu akan menampilkan semua baris kecuali Anda memiliki 10.000 baris yang tidak cocok dalam satu baris. Gunakan sesuatu sepertiGREP_COLORS="ms=31:sl=33:cx=32" grep -A9999 -B9999 SEVERE
untuk menunjukkan kataSEVERE
dalam warna merah, sisa garis SEVERE dalam warna kuning, dan semua garis lainnya (non-SEVERE) (hingga 9999) berwarna hijau.--color=always
ke grep bukan hanya--color
, tergantung pada urutan pipa Anda, tetapi ya, ini bekerja dengan baik (GNU coreutils) 8.27 diinstal pada kotak saya.Untuk mendapatkan output berwarna dari perintah standar seperti
grep
, Anda harus mengatur inialias
di.bashrc
ketika Anda menangkap sesuatu di file Anda, Anda melihat sesuatu seperti ini, (tetapi mungkin berwarna merah):
jika ingin menggunakan
tail
atauawk
dan ingin agar warna tersebut bertahan untuk sebuah pipa, maka alias tidak cukup dan Anda harus menggunakan--color=always
parameter, misalnya:Jika Anda ingin teks berwarna dengan
awk
cerita sedikit rumit tetapi lebih kuat, misalnya:dengan masing-masing garis dalam warnanya sendiri.
Ada banyak cara lain untuk mendapatkan teks berwarna dari shell dengan alat lain dan mereka dideskripsikan dengan baik oleh anggota lain.
sumber
Saya cukup suka colorex . Sederhana, namun memuaskan.
sumber
Berdasarkan jawaban @uloBasEI, saya sudah mencoba menggunakan
... | perl ... | perl ...
, tetapi pipa Linux menjadi sedikit gila dan terlalu lambat. Jika saya meletakkan semua aturan hanya dalam satuperl
perintah, itu berfungsi dengan baik.Misalnya, buat
perl
file colorTail.pl seperti di bawah ini:Gunakan sebagai:
CATATAN: Anda juga dapat menggunakannya di MobaXTerm ! Cukup unduh
perl
plug-in dari situs MobaXTerm .sumber
sumber
source-highlight
bukan perintah yang diinstal secara luas, jadi Anda setidaknya harus memberikan tautan ke situs proyek.Salah satu solusi yang berfungsi untuk mewarnai semua jenis teks, bukan hanya file log, adalah alat Python, ' colout '.
Dimana teks dalam output 'myprocess' yang cocok dengan grup 1 regex akan diwarnai dengan color1, group 2 dengan color2, dll.
Sebagai contoh:
yaitu grup regex pertama (parens) cocok dengan tanggal awal dalam logfile, grup kedua cocok dengan nama file python, nomor baris dan nama fungsi, dan grup ketiga cocok dengan pesan log yang datang setelah itu. Ini terlihat seperti:
Perhatikan bahwa garis atau bagian dari garis yang tidak cocok dengan regex saya masih bergema, jadi ini bukan seperti 'grep --color' - tidak ada yang disaring dari output.
Jelas ini cukup fleksibel sehingga Anda dapat menggunakannya dengan proses apa pun, tidak hanya mengekor file log. Saya biasanya hanya menyiapkan regex baru dengan cepat setiap kali saya ingin mewarnai sesuatu. Untuk alasan ini, saya lebih suka colout ke alat pewarnaan logfile khusus, karena saya hanya perlu mempelajari satu alat, terlepas dari apa yang saya warnai: logging, output tes, sintaks menyoroti potongan kode di terminal, dll.
sumber
Shameless plug: Saya menulis sebuah alat bernama TxtStyle yang melakukan sesuatu yang mirip dengan opsi yang disebutkan sebelumnya. Anda dapat menjalankannya sebagai berikut:
Anda juga dapat mendefinisikan gaya yang dinamai dalam file konfigurasi (
~/.txts.conf
) dan menggunakannya seperti:(
ifconfig
gaya didefinisikan di luar kotak)sumber
grc pasti!
sesuaikan collors Anda dengan regex di file: ~ .grc / conf.tail (atau nama apa pun yang Anda inginkan)
garis komando:
hasil:
info untuk mengkonfigurasi grc: https://github.com/manjuraj/config/blob/master/.grc/sample.conf
sumber
Saya menulis fungsi bash yang menerima hingga tiga parameter dan melakukan filter mirip grep pada file teks, dan menampilkan teks ke layar berwarna.
Saya juga ingin melihat fungsi ekor yang akan melakukan ini, tetapi belum menemukannya.
Fungsi ini juga dapat ditingkatkan - Saya menghargai bantuan apa pun tentang cara membuatnya lebih baik.
sumber
Tentu !
Saya menulis panjang pergi fungsi yang disebut "egrepi", berdasarkan definisi variabel 8 warna. Ini berfungsi HANYA disalurkan seperti fungsi berwarna "tail -f".
1. setColors
pertama, fungsi variabel warna untuk dipanggil pada awalnya:
2. egrepi
dan fungsi egrepi, efektif dan elegan: siklus warna antara 8 atau lebih warna (kebutuhan Anda) DAN diuji di bawah 3 OS unix yang berbeda, dengan komentar:
3. Penggunaan
perintah | egrepi word1 .. wordN
sumber
Anda mungkin juga ingin melihat jam tangan :
tail -f /var/log/syslog | lwatch --input -
sumber
Sedangkan untuk kode warna, saya akan menggunakan tput:
Lihat untuk referensi:
man tput
Kemudian:
sumber
Terbit beberapa waktu lalu utilitas Node Js - log-color-highlight
sumber