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

devtools/2024/10/17 14:29:23/

使用qDebug()打印信息时,默认打印"<<"符号后面的信息。

通过自定义宏,可以额外打印文件名,行数,函数,日期、时间等前缀,方便快速定位调式信息的位置。

同时,可以定义宏取消打印输出。

代码如下:

#include <QDebug>        //注意,头文件一定要添加
#define XLOG_EN
#ifdef  XLOG_EN#define xLog qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"
#else#define xLog    QT_NO_QDEBUG_MACRO()
#endifint 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

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

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


http://www.ppmy.cn/devtools/126484.html

相关文章

K8s-services+pod详解1

一、Service 我们能够利用Deployment创建一组Pod来提供具有高可用性的服务。 虽然每个Pod都会分配一个单独的Pod IP&#xff0c;然而却存在如下两问题&#xff1a; Pod IP 会随着Pod的重建产生变化Pod IP 仅仅是集群内可见的虚拟IP&#xff0c;外部无法访问 这样对于访问这…

vueuse的常用方法记录

useStorage(key, value): 响应式的LocalStorage// 初始化 useLocalStorage&#xff0c;传入 key 和默认值 const storedValue useStorage(my-key, default-value);// 监听存储值的变化 watch(storedValue, (newValue, oldValue) > {console.log(存储值从, oldValue, 变更为…

GC1272替代APX9172/茂达中可应用于电脑散热风扇应用分析

在电脑散热风扇应用中&#xff0c;选择合适的驱动器件对于风扇的性能和效率至关重要。以下是对GC1272替代APX9172/茂达在此类应用中的分析&#xff1a; 1. 功能比较 GC1272&#xff1a; 主要用于驱动直流风扇&#xff0c;具有高效的电流控制和调速功能。支持PWM调速&#xff0…

LeetCode两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

大模型~合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12275703 # 大模型参数高效微调综述 近期&#xff0c;大语言模型、文生图模型等大规模 AI 模型迅猛发展。在这种形势下&#xff0c;如何适应瞬息万变的需求&#xff0c;快速适配大模型至各类下游任务&#xff0c;成为了一个…

正则化L1和L2的区别

L1正则化和L2正则化是机器学习领域中常用的两种正则化技术&#xff0c;它们的主要区别在于对模型参数的惩罚方式和产生的效果不同。 一、定义与公式 L1正则化&#xff08;Lasso正则化&#xff09; L1正则化通过在损失函数中添加模型参数绝对值之和的正则项来限制模型的复杂度。…

Codeforces Round 770 (Div. 2)

比赛链接&#xff1a;Dashboard - Codeforces Round 770 (Div. 2) - Codeforces A. Reverse and Concatenate 题意&#xff1a; 思路&#xff1a; 假设 s "abba" 经过1次操作后 -> "abbaabba" s "abcd" 经过一次操作后 -> "abcd…

2024前端面试题大全

2024前端面试题大全涵盖了多个方面&#xff0c;包括HTML、CSS、JavaScript、Vue、React等前端技术。‌ HTML和CSS面试题 ‌HTML5新特性‌&#xff1a;包括绘画canvas、媒体回放元素video和audio、本地离线存储localStorage和sessionStorage、语义化更好的内容元素如article、…