用printf做彩色日誌記錄 及巨集定義printf

2021-08-19 09:12:10 字數 1666 閱讀 9988

[c程式設計在linux上]用printf做彩色日誌記錄

寫了乙個簡單的程式,但是考慮到有一些資訊是需要列印在控制台上的,就像在windows上啟動apache tomcat時控制台顯示的資訊一樣。琢磨一會兒之後,對printf進行了封裝,支援控制台列印日誌,支援輸出到檔案裡。不過控制台都是固定顏色的,不好看。於是在網上找了一下資料,printf還真支援輸出不同的顏色,如下:

例項:printf("\033[1;33m hello world. \033[0m \n");

\033      [1;        33m           ***x

|          |          |             |

開始    背景色      字型色        字串

一些常見的顏色**:

none         = "\033[0m"

black        = "\033[0;30m"

dark_gray    = "\033[1;30m"

blue         = "\033[0;34m"

light_blue   = "\033[1;34m"

green        = "\033[0;32m"

light_green 

-= "\033[1;32m"

cyan         = "\033[0;36m"

light_cyan   = "\033[1;36m"

red          = "\033[0;31m"

light_red    = "\033[1;31m"

purple       = "\033[0;35m"

light_purple = "\033[1;35m"

brown        = "\033[0;33m"

yellow       = "\033[1;33m"

light_gray   = "\033[0;37m"

white        = "\033[1;37m"

輸出:

#include#define print_red(...) printf("\033[31m [filename:%s, function:%s, line:%d]\033[0m", __file__, __function__, __line__); \

printf("\033[31m"__va_args__"\033[0m"); \

printf("\n");

#define print_green(...) printf("\033[32m [filename:%s, function:%s, line:%d]\033[0m", __file__, __function__, __line__); \

printf("\033[32m"__va_args__"\033[0m"); \

printf("\n");

int main(int argc, const char *argv)

巨集定義

#define print(...) printf("[%s %d]: %s\n", __file__, __line__, __va_args__)

printf記錄程式日誌

但是通常我們需要在記錄日誌的時候記錄更多的資訊,比如說執行時間等,所以我們不能使用一條簡單的printf來完成該操作,另外,為防止日誌資訊以外丟失,我們最好是在每次printf後立即呼叫fflush。所以我們通常會使用下面的方法來完成日誌記錄操作 void cdecl log0 const char...

用Swatch做Linux日誌分析

1 建立swatch軟體包存放的目錄.mkdir p usr local src log 2 解壓縮源 包,在log目錄下會生成乙個新的目錄apache 1.3.33 tar zpxf swatch 3.1.1.tar.gz 二.安裝 cd swatch 3.1.1 make make test m...

用 R做 DEA 工作記錄

簡單來說,dea算tfp是這個意思。因為沒有找到python算dea的很多資料,不知道怎麼下手,用了網上乙個人寫的 結果也是錯的,還有別的方法太複雜。查到乙個 pydea 包,也沒看到任何人用過。最後查了一下,發現r有成熟的包,函式看起來也很簡單,就用了一下。弄了半天,男朋友又不要算這個指標了,他根...