Qt中自定义qDebug打印信息的宏(文件名,行数,时间等等)

2023-05-16

前言

QDebug类提供用于调试信息的输出流。

当开发人员需要将调试或跟踪信息写到设备,文件,字符串或控制台时,将使用QDebug。

 当我们使用qDebug()打印信息时,只有我们所需要打印的信息,在此自定义一个宏,可以额外打印文件名,函数,行数,时间等等。

示例

#include <QDebug>//注意,头文件一定要添加

#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"

int main(int argc, char *argv[])
{
    MYLOG << "Hello World!";
    return 1;
}

以上程序运行,将会打印如下内容:

[ ../GetMD5/main.cpp : 7 : main Nov 28 2019 10:35:07 ] Hello World!

可以看到在MYLOG宏中,添加了__FILE__,__LINE__,__func__,__DATE__,__TIME__这几个C/C++编译器内置的几个宏(注意,是双下划线,而不是单下划线),就可以打印我们额外添加的文件名,函数,行号等等,便于我们精确找到打印的位置。

__func__:当前的函数名;//__FUNCTION__也可以实现
__DATE__:当前的编译日期;
__TIME__:当前编译时间;
__FILE__:当前源文件路径及文件名;
__LINE__:当前源代码行号;

需要注意的是,__DATE__,__TIME__打印的是编译的时间,不是程序运行到打印时的时间,我们可以简单使用Qt自带的QDateTime实现,如下:

#include <QDebug>
#include <QDateTime>

#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")<< "]"

int main(int argc, char *argv[])
{
    MYLOG << "Hello World!";
    return 1;
}

运行后打印:

[ ../GetMD5/main.cpp : 8 : main "2019-11-28 10:51:22:894" ] Hello World!

 结尾

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中自定义qDebug打印信息的宏(文件名,行数,时间等等) 的相关文章

随机推荐

  • Ubuntu设置开机自启动

    文章目录 前言一 基本概念二 操作步骤1 终端输入2 设置路径 总结 前言 本文介绍如何在Ubuntu设置开机自启动 一 基本概念 除了系统上配置的默认启动应用程序之外 xff0c gnome session properties 程序使用
  • uniapp 发布网站遇到的问题(跨域,nginx代理失败,index无法打开,手机端无法访问等)

    跨域 如果开发的应用直接是作为手机APP是不存在跨域问题的 xff0c 但是如果是网站形式就要考虑这个问题了 分为两点 xff1a 1 调试时 可通过设置maintest 2 发布后 可通过Nginx配置文件设置代理 nginx代理失败 1
  • 怎么在linux上安装vnc

    1 首先检查是否安装了VNC服务 输入命令 xff1a rpm qa grep vnc 2 安装VNC xff0c 首次执行vncserver需要设置密码 xff0c 可以创建多个桌面 xff0c 执行多次vncserver命令即可 roo
  • VNC修改端口号

    1 vnc的默认端口是自己配置的 xff0c 想要修改vncserver的配置 xff0c 需要先找配置文件路径 root 64 node04 which vncserver usr bin vncserver 2 通过查找以前配置的端口
  • onNewIntent使用遇到的坑

    onCreate是用来创建一个Activity也就是创建一个窗体 xff0c 但一个Activty处于任务栈的顶端 xff0c 若再次调用startActivity去创建它 xff0c 则不会再次创建 若你想利用已有的Acivity去处理别
  • CentOS7使用firewall-cmd打开关闭防火墙与端口

    一 centos7版本对防火墙进行加强 不再使用原来的iptables 启用firewalld 1 firewalld的基本使用 启动 xff1a systemctl start firewalld 查状态 xff1a systemctl
  • 算法数学基础-排列组合(题目取自牛客网)

    基础理论 xff1a 排列 有限集的子集按某种条件的序化法排成列 排成一圈 不许重复或许重复等 从n个不同元素中每次取出m xff08 1 m n xff09 个不同元素 xff0c 排成一列 xff0c 称为从n个元素中取出m个元素的无重
  • 关于对Spring框架的详解

    Spring框架 基本概念Spring的形成主要模块三层架构Spring的优点对于Spring 框架中都用到设计模式 xff1a 基本概念 Spring框架是由于软件开发的复杂性而创建的 Spring使用的是基本的JavaBean来完成以前
  • vs2015 提示严重性代码说明项目文件行禁止显示状态 错误C4996 'scanf': This function or variable may be unsafe.

    在 vs2015 中使用scanf时总是提示 unsafe 报出错误 xff0c 解决办法是在已经建立的项目中 xff0c 以后可能需要经常进行再不同的项目进行这项操作 xff1a 项目 gt 属性 gt c c 43 43 gt 常规 g
  • base7. ThreadPool线程池类——生产者与消费者模型

    ThreadPool类图 数据成员 xff1a MutexLock mutex xff1a 一个MutexLock类型的互斥变量mutex Condition cond xff1a 一个Condition类型的条件变量cond string
  • Ubuntu下anaconda中PyCharm遇到的环境问题

    Table of Contents 运行找不到包文件 可以run xff0c 不能debug 运行找不到包文件 解救办法 xff1a 将包的路径添加到interpreter中 可以run xff0c 不能debug 去掉setting中py
  • origin画图——同一图中多组数据

    origin画图 同一图中多组数据 xff08 2维 xff09 导入数据分别确定X Y轴列数据 xff08 选中列 set as X Y xff0c 全选数据 xff0c 点击下方绘图图标
  • pacman用法

    Pacman 是archlinux 下的包管理软件 它将一个简单的二进制包格式和易用的构建系统结合了起来 不管软件包是来自官方的 Arch 库还是用户自己创建 xff0c Pacman 都能方便得管理 pacman Sy abc 和源同步后
  • Spring注解-1-SpringBoot是如何处理注解的

    本文基于Spring 5 2 7 这是个很大的话题 xff0c 但是是个非常实在的话题 xff0c 注解天天用 xff0c 处处用 xff0c 请问你知道他是怎么起作用的吗 xff1f 如果你使用了注解 xff0c 那么一定有代码在什么地方
  • Qt对当前界面进行截图并保存

    Qt提供了对界面截图的功能 xff0c 非常简单 xff0c 只需要2行即可截图并保存下来 xff0c 如下 xff1a QPixmap pixMap 61 QPixmap grabWidget this pixMap save 34 my
  • Qt中通过Qpixmap设置图片透明度

    最近看到美图秀秀的一些功能 xff0c 可以手动设置图片的透明度并显示在其它图片上 xff0c 所以自己动手做了个小Demo xff0c 实际效果如下 xff1a xff08 图片仅供参考使用 xff09 可以看到拖动下方进度条 xff0c
  • QTableWidget中添加QComboBox/QPushButton控件并响应控件点击

    QTableWidget是QT程序中常用的显示数据表格的空间 xff0c 里面不仅仅可以添加文字 xff0c 也可以添加控件 xff0c 图片等等 xff0c 此处以添加QCombobox和QPushButton举例 xff0c 点击选择控
  • QMap的简单使用(增删改查等)

    前言 QMap是Qt提供的容器类 xff0c 是一种由key到value的映射 与C 43 43 中STL提供的map使用方法相同 xff0c 部分使用细节上 xff0c QMap做了优化 插入 QMap lt int QString gt
  • vector<char>与char*相互转换

    最近在做网络通信 xff0c 看到很多人使用vector lt char gt 来存储二进制网络数据 xff0c 而我有时需要用char 数据 xff0c 所以记录下二者的相互转换方法 xff0c 代码如下 xff1a include lt
  • Qt中自定义qDebug打印信息的宏(文件名,行数,时间等等)

    前言 QDebug类提供用于调试信息的输出流 当开发人员需要将调试或跟踪信息写到设备 xff0c 文件 xff0c 字符串或控制台时 xff0c 将使用QDebug 当我们使用qDebug 打印信息时 xff0c 只有我们所需要打印的信息