Qt中自定义qDebug打印信息的宏(文件名,行数,函数名,日期,时间等前缀)并取消打印

使用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

则调试的打印信息就不会输出了!

当然,打印前缀可以使用其它固定的字符串。

相关推荐
笑鸿的学习笔记5 分钟前
C++笔记之SIMD与SSE指令集
开发语言·c++·笔记
福兮说24 分钟前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了1 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
可乐鸡翅yeah_1 小时前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
en.en..1 小时前
Linux 进程退出exit(函数)
java·开发语言·算法
Cx330❀1 小时前
【Qt 进阶指南】详解 Qt 常用标准对话框与主窗口组件架构
开发语言·qt·ui·性能优化·架构·图形渲染
Light Gao1 小时前
Encoder 与 Decoder 详解:从 Embedding 到 Seq2Seq 的完整数据流
java·开发语言·embedding
HZZD_HZZD1 小时前
弱网下CoAP还省吗?合众致达Cat.1电表90天实测:MQTT重连流量占52%、续航差距从38%拉大到73%
开发语言·物联网·php·腾讯云
web打印社区1 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
小师兄吃牛肉1 小时前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言