c++ 日志打印方式代码不同颜色 笔记

 头文件定义

#ifndef __UTILS_HPP__
#define __UTILS_HPP__
#include <stdio.h>
#include <stdarg.h>

// Logging 日志打印
#define LOG(...)                     __log_info(Level::INFO, __VA_ARGS__)  // 默认级别为INFO
#define LOGV(...)                    __log_info(Level::VERB, __VA_ARGS__)  // 默认级别为VERB
#define LOGE(...)                    __log_info(Level::ERROR, __VA_ARGS__) // 默认级别为ERROR

// 定义颜色宏
#define DGREEN    "\033[1;36m"
#define BLUE      "\033[1;34m"
#define PURPLE    "\033[1;35m"
#define GREEN     "\033[1;32m"
#define YELLOW    "\033[1;33m"
#define RED       "\033[1;31m"
#define CLEAR     "\033[0m"

// Level是一个枚举类型
enum Level { INFO, VERB, ERROR };

// 日志函数实现
static void __log_info(Level level, const char* format, ...) {
    char msg[1000];
    va_list args;
    va_start(args, format);
    int n = 0;

    if (level == Level::INFO) {
        n += snprintf(msg + n, sizeof(msg) - n, YELLOW "[info]:");
    } else if (level == Level::VERB) {
        n += snprintf(msg + n, sizeof(msg) - n, PURPLE "[verb]:" CLEAR);
    } else {
        n += snprintf(msg + n, sizeof(msg) - n, RED    "[error]:");
    }
    n += vsnprintf(msg + n, sizeof(msg) - n, format, args);

    fprintf(stdout, "%s\n", msg);
    va_end(args);
}


#endif //__UTILS_HPP__

使用方式

#include "utils.hpp"


int main() {
    // 输出不同类型的日志信息
    LOG("这是一个信息日志");
    LOGV("这是一个详细信息日志");
    LOGE("这是一个错误日志");

    LOG("这是%s信息日志%s,%s,%s", "一个", "参数", "日志", "输出");
    return 0;
}

效果

posted @ 2025-05-09 14:16  qinchaojie  阅读(30)  评论(0)    收藏  举报  来源