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 //要添加的头文件 #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 则调试的打印信息就不会输出了! 当然,打印前缀可以使用其它固定的字符串。

相关推荐
Jonathan Star3 分钟前
在 JavaScript 中, `Map` 和 `Object` 都可用于存储键值对,但设计目标、特性和适用场景有显著差异。
开发语言·javascript·ecmascript
lly2024064 分钟前
Font Awesome 音/视频图标
开发语言
froginwe1127 分钟前
MongoDB 查询分析
开发语言
LateFrames1 小时前
C# 中,0.1 在什么情况下不等于 0.1 ?
开发语言·c#
froginwe111 小时前
SciPy 图结构
开发语言
Larry_Yanan1 小时前
QML学习笔记(五十二)QML与C++交互:数据转换——时间和日期
开发语言·c++·笔记·qt·学习·ui·交互
歪歪1001 小时前
详细介绍一下“集中同步+分布式入库”方案的具体实现步骤
开发语言·前端·分布式·后端·信息可视化
yaoxin5211232 小时前
229. Java 集合 - 操作集合中的多个元素(批量操作)
java·开发语言·python
在人间负债^2 小时前
从Python到仓颉:核心项目内容迁移实践
开发语言·python·鸿蒙·仓颉
HSJ01702 小时前
Aviator中使用BigDecimal进行高精度计算
java·开发语言·bigdecimal·aviator