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

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

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

相关推荐
Hello.Reader2 分钟前
全面解析 Golang Gin 框架
开发语言·golang·gin
禁默13 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Code哈哈笑22 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
程序猿进阶25 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_4336184428 分钟前
shell 编程(二)
开发语言·bash·shell
charlie11451419142 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满42 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He9991 小时前
PHP中替换某个包或某个类
开发语言·php
m0_748236111 小时前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头1061 小时前
【C++指南】类和对象(九):内部类
开发语言·c++