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

ops/2024/10/22 17:36:20/

使用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/ops/127624.html

相关文章

Ansible概述

目录 一、ansible简介 二、absible的特点 三、ansible的工作原理以及流程 四、ansible环境安装部署 五、ansible命令行模块 六、inventory 主机清单 一、ansible简介 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。…

Unity3D模型消融方法(二)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉二、模型淡入淡出效果实现👉3-1、具体实现方法👉3-2、CrollerShader.cs👉3-3、ModelXR.cs👉3-4、交互脚本👉壁纸分享👉总结👉前言 上一篇写了模型消融的方法, 这一篇算是淡入淡出效…

RabbitMQ深层浅讲【通俗易懂】

在之前我们讲了rabbitmq基础的五种消息模型&#xff0c;接下来我们来谈谈它的防护机制&#xff0c;具体的来说就是我们怎么做来确保消息的可靠性&#xff1f; 在这个架构中&#xff0c;一共有三个角色&#xff0c;那么我们就要从这三个方面来确保消息的可靠完整 生产者的可靠性…

Vim使用与进阶

1. Vim 技巧 撤销 U 反撤销 Ctrl U 历史命令 history 2.要在Vim中进行多行缩进&#xff0c;可以按以下步骤操作&#xff1a; 进入Vim编辑器并进入命令模式。使用 v 键或 Shift v 键选择多行需要缩进的文本。按下 > 键进行向右缩进&#xff0c;或按下 < 键进行向左…

TCP/IP 寻址

TCP/IP 寻址 概述 TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;是一组用于数据网络的通信协议。它们定义了数据如何在网络上从一个设备传输到另一个设备。在TCP/IP网络中&#xff0c;每个设备都有一个唯一的地址&#xff0c;称为IP地址&#xff0c;用于标识网络上…

Flink消费Kafka实时写入Doris

本文模拟实际生产环境&#xff0c;通过FileBeat采集日志信息到Kafka&#xff0c;再通过Flink消费Kafka实时写入Doris。 文章目录 Filebeat采集日志到KafkaFlink消费Kafka实时写入Doris总结 Filebeat采集日志到Kafka 常见的日志采集工具有以下几种&#xff1a;Flume、Logstash和…

Python基础和理论学习

Python作为一种高级编程语言&#xff0c;以其简洁的语法和广泛的应用&#xff0c;成为许多开发者和分析师首选的语言。无论是用来进行数据分析、机器学习、Web开发还是自动化任务&#xff0c;Python都具有强大的功能。本文将深入探讨Python的基础知识和理论&#xff0c;以帮助你…

计算机组成原理一句话

文章目录 计算机系统概述存储系统 计算机系统概述 指令和数据以同等地位存储在存储器中&#xff0c;形式上没有差别&#xff0c;但计算机应能区分他们。通过指令周期的不同阶段。 完整的计算机系统包括&#xff0c;1&#xff09;软件系统&#xff1a;程序、文档和数据&#xff…