qt 使用超级终端自定义打印格式
打印格式:
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打印的中间空格部分
越努力,越幸运