qt 使用超级终端自定义打印格式

发布时间 2023-09-01 09:06:12作者: 大蔡一顿
打印格式:
AppInit::start::[37]
AppInit - 类名
start - 类函数名
37 - 行号

//类名定义

#define __CLASS__ __class__
#define __class__ abi::__cxa_demangle(typeid(*this).name(), 0, 0, 0)                //获取类名(必须在类内部调用,因为含有this指针)

//终端颜色宏定义
#define NONE         "\033[0m"
#define RED          "\033[0;32;31m"
#define LIGHT_RED    "\033[1;31m"
#define GREEN        "\033[0;32;32m"
#define LIGHT_GREEN  "\033[1;32m"
#define BLUE         "\033[0;32;34m"
#define LIGHT_BLUE   "\033[1;34m"
#define DARY_GRAY    "\033[1;30m"
#define CYAN         "\033[0;36m"
#define LIGHT_CYAN   "\033[1;36m"
#define PURPLE       "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN        "\033[0;33m"
#define YELLOW       "\033[0;33m"
#define LIGHT_YELLOW "\033[1;33m"
#define LIGHT_GRAY   "\033[1;37m"
#define WHITE        "\033[0;37m"
#define LIGHT_WHITE  "\033[1;37m"

//linux方式打印
#define LOG_INFO(...) do{printf(LIGHT_GREEN "%s::%s::[%d]: " NONE, __CLASS__, __FUNCTION__, __LINE__); printf(__VA_ARGS__);}while(0)
#define LOG_WARN(...) do{printf(LIGHT_YELLOW "%s::%s::[%d]: " NONE, __CLASS__, __FUNCTION__, __LINE__); printf(__VA_ARGS__);}while(0)
#define LOG_ERR(...)  do{printf(LIGHT_RED "%s::%s::[%d]: " NONE, __CLASS__, __FUNCTION__, __LINE__); printf(__VA_ARGS__);}while(0)

//qDebug方式打印
#define QLOG_INFO qDebug().nospace()<<LIGHT_GREEN<<__CLASS__<<"::"<<__FUNCTION__<<"::["<<__LINE__<<"]"<<NONE<<": "
#define QLOG_WARN qDebug().nospace()<<LIGHT_YELLOW<<__CLASS__<<"::"<<__FUNCTION__<<"::["<<__LINE__<<"]"<<NONE<<": "
#define QLOG_EROR qDebug().nospace()<<LIGHT_RED<<__CLASS__<<"::"<<__FUNCTION__<<"::["<<__LINE__<<"]"<<NONE<<": "
其中
nospace为去除qDebug打印的中间空格部分