首页 > 其他分享 >笔记:Qt开发之定制化qDebug()函数

笔记:Qt开发之定制化qDebug()函数

时间:2023-12-12 18:34:47浏览次数:35  
标签:24 Qt 笔记 815 qDebug message main id 函数

目标:实现qDebug()函数的定制输出,包含文件名、函数名、行数等信息
1,通过qSetMessagePattern函数,实现定制化输出

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    // 改变缺省消息处理程序的输出,信息:线程:功能函数(行数):时间
    qSetMessagePattern("%{message} :id=%{threadid} %{function}(%{line}):%{time [hh:mm:ss zzz]}");

    // 打印信息
    qDebug("This is a debug message.");
    qInfo("This is a info message.");
    qWarning("This is a warning message.");
    qCritical("This is a critical message.");
    //qFatal("This is a fatal message.");

    ...
    return app.exec();
}
输出信息
This is a debug message. :id=815 main(217):[11:37:24 843]
This is a info message. :id=815 main(218):[11:37:24 843]
This is a warning message. :id=815 main(219):[11:37:24 844]
This is a critical message. :id=815 main(220):[11:37:24 844]
占位符         描述
%{appname}     应用名字
%{file}        源文件路径
%{function}    函数
%{line}        源文件所在行
%{message}     实际的消息
%{pid}         应用进程号
%{threadid}    线程ID
%{type}        日志类型(如Debug、Warning、Critical等)
%{time}当前时间戳
%{time boot}   系统启动后到当前时刻经过的时间
可以使用条件类型,%{if-debug}, %{if-info} ,%{if-warning}, %{if-critical} 或 %{if-fatal}后面跟着一个%{endif}。如果类型匹配,%{if-*} 和 %{endif}之间的内容会被打印。
注意:qSetMessagePattern函数只会影响使用Qt的日志系统,如QDebug、qInfo、qWarning和qCritical等函数输出的日志消息。
2,Release 版本默认不包含文件名、函数名、行数等信息,需在.pro项目文件加入以下代码,然后重构项目:DEFINES += QT_MESSAGELOGCONTEXT
3,在.pro文件定义以下的宏,可以屏蔽相应的日志输出DEFINES += QT_NO_WARNING_OUTPUTDEFINES += QT_NO_DEBUG_OUTPUTDEFINES += QT_NO_INFO_OUTPUT

标签:24,Qt,笔记,815,qDebug,message,main,id,函数
From: https://www.cnblogs.com/bog-box/p/17897557.html

相关文章

  • C++学习笔记八:极限和数学运算<limits><cmath>
    1)<limits>库:1.1源文档:https://en.cppreference.com/w/cpp/types/numeric_limits#include<limits> 1.2库函数:函数解释:对于一个浮点数,lowest表示最小的可表示的负数,min表示最小的可表示的接近0的数,max表示最大的可表示的正数对于一个有符号整数,min表示可以表示的最小的......
  • 【转载】QT学习之路(一)ubuntu 18.04的Qt Creator在线安装
    https://blog.csdn.net/qq_26849933/article/details/127115102前言Qt是嵌入式开发的必备工具之一,在Linux下安装尤其重要。Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率。QtCreator是一个IDE,就是一个平台,一个开发环境,类似的比如说VS,也可以进行Qt开发,当......
  • 进/线/协程--引自阿秀的学习笔记
    进程、线程与协程区别1、进程是资源分配的基本单位,运行一个可执行程序会创建一个或多个进程,进程就是运行起来的可执行程序2、线程是资源调度的基本单位,也是程序执行的基本单位,是轻量级的进程。每个进程中都有唯一的主线程,且只能有一个,主线程和进程是相互依存的关系,主线程结束进......
  • 2023年的PHP项目部署笔记。什么?还有人用PHP?
    前言这是我第一次用PHP的包管理工具composer一开始用docker进行部署,但一直出问题,最后还是选择直接在服务器上安装php-fpm搭配nginx的方案了。PS:docker方式真的搞得心好累,现在回想起来还心有余悸......
  • C++ Qt开发:SpinBox数值微调框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSpinBox精度数值组件的常用方法及灵活运用。QSpinBox是Qt框架中的一个部件(Widget),用于提供一个方......
  • 《构建之法》读书笔记(一)
      最近看了《构建之法》这本书,我从书中获取到了许多关于软件工程这一方面的知识。  软件企业=软件+商业模式。对于软件工程以及行业,程序是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式,影响了一个软件企业的成败,同时软件从业人员和软件企业的道德操......
  • 【论文阅读笔记】【OCR-文本识别】 SEED: Semantics Enhanced Encoder-Decoder Framew
    SEEDCVPR2020读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何利用全局的语义信息提高文本识别模型对低质量文本的鲁棒性和识别效果?背景:以往的基于encoder-decoder的文本识别方法通常基于局部的视觉特征解码出文本,忽略了对单词显式的全局语义信息的......
  • 《Effective Java》阅读笔记-第五章
    EffectiveJava阅读笔记第五章泛型第26条不要使用原生类型随着泛型的普及,这条没什么可说的。如果不知道具体类型,可以使用<?>来代替。第27条消除unchecked警告原生类型到泛型转换时,编译会有警告,可以使用@SuppressWarnings("unchecked")来消除警告。并且应该在尽可......
  • 秦疆的Java课程笔记:65 面向对象 创建对象内存分析
    先写两个类//创建一个Pet类==============================packageOOP.demo;publicclassPet{publicStringname;publicintage;publicvoidshout(){System.out.println("喵~~");}}//主程序Application================......
  • 学C笔记归纳 第十二篇——函数2 声明和定义
    函数功能越单一,可移植性越强——“高内聚低耦合”;函数可以嵌套调用,不可以嵌套定义;关于函数声明:    告诉编译器函数名、参数、返回类型,但函数具体存在由函数定义决定;    函数声明一般出现在函数使用之前,要满足先声明后使用;    函数声明一般放在头文件......