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

相关推荐
Felix_One5 天前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
blasit8 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
郑州光合科技余经理13 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo12313 天前
matlab画图工具
开发语言·matlab
dustcell.13 天前
haproxy七层代理
java·开发语言·前端
norlan_jame13 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone13 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ40220549613 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
遥遥江上月13 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_5312371713 天前
C语言-数组练习进阶
c语言·开发语言·算法