使用qDebug()打印信息时,默认打印"<<"符号后面的信息。
通过自定义宏,可以额外打印文件名,行数,函数,日期、时间等前缀,方便快速定位调式信息的位置。
同时,可以定义宏取消打印输出。
代码如下:
#include <QDebug> //注意,头文件一定要添加
#define XLOG_EN
#ifdef XLOG_EN
#define xLog qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"
#else
#define xLog QT_NO_QDEBUG_MACRO()
#endif
int main(int argc, char *argv[])
{
xLog << "Hello World!";
return 1;
}
程序运行,将会打印如下内容:
[ ../main.cpp : 7 : main Oct 16 2024 15:47:17 ] Hello World!
func:当前的函数名;//同QT_MESSAGELOG_FUNC或Q_FUNC_INFO或__FUNCTION__
DATE:当前的编译日期;
TIME:当前编译时间;
FILE:当前源文件路径及文件名;//同QT_MESSAGELOG_FILE
LINE:当前源代码行号;//同QT_MESSAGELOG_LINE
注意:DATE,__TIME__打印的是编译的时间,不是程序运行到打印时的时间,我们可以简单使用Qt自带的QDateTime实现,如下:
#include <QDateTime> //要添加的头文件
#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")<< "]"
程序运行输出信息如下:
[ ../main.cpp : 7 : main "2024-10-16 16:10:20:398"] Hello World!
如果屏蔽定义:
//#define XLOG_EN
则调试的打印信息就不会输出了!
当然,打印前缀可以使用其它固定的字符串。