彩色的log信息

来源:互联网 发布:全球肥胖死亡数据报道 编辑:程序博客网 时间:2024/05/16 02:10
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>/* *本章博客是对linux log信息的研究 * */# define PRT_OBJECT(x) ((struct prt_object *)(x))/** Message types */enum msg_item_type{    MSG_INFO=0, /**< Important information */    MSG_ERR,    /**< Error */    MSG_WARN,   /**< Warning */    MSG_DBG,    /**< Debug */};#define COL(x,y)  "\033[" #x ";" #y "m"#define RED     COL(31,1)#define GREEN   COL(32,1)#define YELLOW  COL(0,33)#define WHITE   COL(0,1)#define GRAY    "\033[0m"static const char msg_type[4][9] = { " info", " error", " warning", " debug" };static const char msg_color[4][8] = { WHITE, RED, YELLOW, GRAY };/*取可变参数的过程其实就是堆栈中,使用指针,遍历堆栈段中的参数列表, *从低地址到高地址一个一个地把参数内容读出来的过程. */void prt_log(int type,const char *module, const char *format, ...){    va_list args;    char tmp[200];    va_start(args, format);    vsprintf(tmp, format, args);    va_end(args);    fprintf(stderr, "%s %s: %s %s", module, msg_type[type],msg_color[type],tmp);    fputs(GRAY"\n", stderr);}#define MODULE_STRING "log.c"#define msg_dbg(...) \    prt_log(MSG_DBG,  MODULE_STRING, __VA_ARGS__)#define msg_warn(...) \    prt_log(MSG_WARN, MODULE_STRING, __VA_ARGS__)#define msg_err(...) \    prt_log(MSG_ERR,  MODULE_STRING, __VA_ARGS__)#define msg_info(...) \    prt_log(MSG_INFO, MODULE_STRING, __VA_ARGS__)int main(void){    msg_err("hal read err!");    msg_info("hal read");    msg_dbg("hal reading......");    msg_warn("hal have not read");    return 0;}


效果如下图:

原创粉丝点击