【c++ 日志打印 可复用】 日志打印方式代码不同颜色代码
该头文件 utils.hpp 定义了一个简单的日志打印工具,支持不同级别的日志输出,并带有颜色标识。通过宏定义 LOG、LOGV 和 LOGE,可以方便地输出信息、详细信息和错误日志。日志级别通过 Level 枚举类型区分,日志函数 __log_info 根据级别为日志信息添加不同的颜色前缀,并格式化输出到标准输出。使用示例展示了如何调用这些宏来输出不同类型的日志信息。该工具适用于需要简单日志功能
·
头文件定义
#ifndef __LOGGER_HPP__
#define __LOGGER_HPP__
#include <string>
#include <stdarg.h>
#define LOGF(...) __log_info(Level::FATAL, __VA_ARGS__)
#define LOGE(...) __log_info(Level::ERROR, __VA_ARGS__)
#define LOGW(...) __log_info(Level::WARN, __VA_ARGS__)
#define LOGI(...) __log_info(Level::INFO, __VA_ARGS__)
#define LOGV(...) __log_info(Level::VERB, __VA_ARGS__)
#define LOGD(...) __log_info(Level::DEBUG, __VA_ARGS__)
#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"
enum class Level : int32_t{
FATAL = 0,
ERROR = 1,
WARN = 2,
INFO = 3,
VERB = 4,
DEBUG = 5
};
extern Level GLOB_LEAVEL;
// 全局日志级别设置
void SET_LOG_LEVEL(Level level);
void __log_info(Level level, const char* format, ...);
// 头文件内容放在这里
#endif // __LOGGER_HPP__
#include "logger.hpp"
Level GLOB_LEAVEL = Level::INFO;
void SET_LOG_LEVEL(Level level){
GLOB_LEAVEL = level;
}
void __log_info(Level level, const char* format, ...) {
char msg[1000];
va_list args;
va_start(args, format);
int n = 0;
switch (level) {
case Level::DEBUG: n += snprintf(msg + n, sizeof(msg) - n, DGREEN "[DEBUG]" CLEAR); break;
case Level::VERB: n += snprintf(msg + n, sizeof(msg) - n, PURPLE "[VERB]" CLEAR); break;
case Level::INFO: n += snprintf(msg + n, sizeof(msg) - n, YELLOW "[INFO]" CLEAR); break;
case Level::WARN: n += snprintf(msg + n, sizeof(msg) - n, BLUE "[WARN]" CLEAR); break;
case Level::ERROR: n += snprintf(msg + n, sizeof(msg) - n, RED "[ERROR]" CLEAR); break;
default: n += snprintf(msg + n, sizeof(msg) - n, RED "[FATAL]" CLEAR); break;
}
n += vsnprintf(msg + n, sizeof(msg) - n, format, args);
va_end(args);
if (level <= GLOB_LEAVEL)
fprintf(stdout, "%s\n", msg);
if (level <= Level::ERROR) {
fflush(stdout);
exit(0);
}
}
使用方式
#include <iostream>
#include "logger.hpp"
int main() {
/* 设置日志级别 */
SET_LOG_LEVEL(Level::DEBUG);
LOGW("LOG WARNING");
LOGI("LOG INFO!");
LOGV("LOG VERBOSE");
LOGD("LOG DEBUG");
return 0;
}
效果

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)