開發調試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
輸入如下內容:
errorxxxxbbbwrfatalinfodebugdkjkinfoerrorwarninginfoinfo
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=autogo 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 不可見
參考資料:
- 讓log中的關鍵詞過濾的酷炫
- 控制台輸出顏色控制(Console 模式下的顏色顯示)
- Perl中Regex用法總結