開發調試stdout log
日誌實時高亮顯示
高亮顯示
其實就是把特定的關鍵詞搜索出來替換爲 ANSI escape code
- 正則替換,
perl -pe 's/<pattern>;/<replacement>;/g'
-
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
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'
效果:
egrep
cat test.txt | egrep "fatal|error|warning|info|debug" -A10 -B10 --color=auto
效果:
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
轉義字符開始,ESC
的 ASCII
碼用十進制表示就是 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 不可見
參考資料: