Qt中自定义qDebug打印信息的宏(文件名,行数,时间等等)

6 篇文章 1 订阅

前言

QDebug类提供用于调试信息的输出流。

当开发人员需要将调试或跟踪信息写到设备,文件,字符串或控制台时,将使用QDebug。

 当我们使用qDebug()打印信息时,只有我们所需要打印的信息,在此自定义一个宏,可以额外打印文件名,函数,行数,时间等等。

示例

#include <QDebug>//注意,头文件一定要添加

#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"

int main(int argc, char *argv[])
{
    MYLOG << "Hello World!";
    return 1;
}

以上程序运行,将会打印如下内容:

[ ../GetMD5/main.cpp : 7 : main Nov 28 2019 10:35:07 ] Hello World!

可以看到在MYLOG宏中,添加了__FILE__,__LINE__,__func__,__DATE__,__TIME__这几个C/C++编译器内置的几个宏(注意,是双下划线,而不是单下划线),就可以打印我们额外添加的文件名,函数,行号等等,便于我们精确找到打印的位置。

__func__:当前的函数名;//__FUNCTION__也可以实现
__DATE__:当前的编译日期;
__TIME__:当前编译时间;
__FILE__:当前源文件路径及文件名;
__LINE__:当前源代码行号;

需要注意的是,__DATE__,__TIME__打印的是编译的时间,不是程序运行到打印时的时间,我们可以简单使用Qt自带的QDateTime实现,如下:

#include <QDebug>
#include <QDateTime>

#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")<< "]"

int main(int argc, char *argv[])
{
    MYLOG << "Hello World!";
    return 1;
}

运行后打印:

[ ../GetMD5/main.cpp : 8 : main "2019-11-28 10:51:22:894" ] Hello World!

 结尾

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

  • 19
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值