stdout log日誌實時高亮顯示

開發調試stdout log日誌實時高亮顯示

高亮顯示

其實就是把特定的關鍵詞搜索出來替換爲 ANSI escape code

  1. 正則替換, perl -pe 's/<pattern>;/<replacement>;/g'
  2. egrep 關鍵詞替換 egrep "fatal|error|warning|info|debug" -A10 -B10 --color=auto
perl 的方式可以指定不同的關鍵詞不同的顏色,egrep 自定義顏色估計很麻煩。

配合linux管道 實際測試

創建一個文本文件

vim test.txt
輸入如下內容:

error
xxxx
bbb
wr

fatal
info
debug
dkjk
info
error
warning
info
info

clipboard.png

perl -pe 正則替換關鍵詞

cat test.txt  | perl -pe 's/(fatal)/\e[0;41;37m$1\e[0m/g; s/(error)/\e[1;31m$1\e[0m/g; s/(warning)/\e[1;33m$1\e[0m/g; s/(info)/\e[1;32m$1\e[0m/g; s/(debug)/\e[1;34m$1\e[0m/g; s/(wechat)/\e[1;35m$1\e[0m/g'

效果:

clipboard.png

egrep

cat test.txt | egrep  "fatal|error|warning|info|debug" -A10 -B10 --color=auto

效果:

clipboard.png

stdout log 處理

我們以 golang程序爲例

go test -v  | egrep "fatal|error|warning|info|debug" -A10 -B10  --color=auto

go test -v | perl -pe 's/(fatal)/\e[0;41;37m$1\e[0m/g; s/(error)/\e[1;31m$1\e[0m/g; s/(warning)/\e[1;33m$1\e[0m/g; s/(info)/\e[1;32m$1\e[0m/g; s/(debug)/\e[1;34m$1\e[0m/g; s/(wechat)/\e[1;35m$1\e[0m/g'
go run main.go | ... 跟上面一樣處理。 golang有一個這個包github.com/fatih/color,可以直接在程序中就這樣子輸出,用了一段時間,感覺日誌還是隻做日誌的事情,不要搞得花裏胡哨的,要 review 日誌的時候,用這兩種方式來過濾, 或者丟到 ELK裏面去。

這個就不貼圖了,跟用tail -f -n 50 /usr/local/var/postgres/log/postgresql-2018-05-24_000000.log | egrep "STATEMENT|LOG" -A10 -B10 --color=auto 以及上面的 cat 效果都是一樣的。

終端控制檯字體顏色

echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 紅色字 \033[0m"
echo -e "\033[32m 綠色字 \033[0m"
echo -e "\033[33m 黃色字 \033[0m"
echo -e "\033[34m 藍色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天藍字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
 

echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 紅底白字 \033[0m"
echo -e "\033[42;37m 綠底白字 \033[0m"
echo -e "\033[43;37m 黃底白字 \033[0m"
echo -e "\033[44;37m 藍底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天藍底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"

詳細說明:

\e[F;B;Om

\e 轉義字符開始,ESCASCII 碼用十進制表示就是 27,等於用八進制表示的 033

  • \e\033 聲明瞭轉義序列的開始
  • [ 開始定義顏色。
  • F 爲字體顏色,編號30~37
  • B 爲背景色,編號40~47
  • O 爲特殊意義代碼
  • 它們的順序沒有關係。
  • m 是標記
  • m 後面不用跟空格,是所定義的彩色字和背景

顏色表

    前景 背景顏色
    -------------------------
    30 40 黑色
    31 41 紅色
    32 42 綠色
    33 43 黃色
    34 44 藍色
    35 45 洋紅 
    36 46 青色
    37 47 白色

    特別代碼意義
    -------------------------
    0 OFF
    1 高亮顯示
    4 underline
    5 閃爍
    7 反白顯示
    8 不可見

參考資料:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章