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


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

    1,通过qSetMessagePattern函数,实现定制化输出

    1. int main(int argc, char **argv)
    2. {
    3. QApplication app(argc, argv);
    4. // 改变缺省消息处理程序的输出,信息:线程:功能函数(行数):时间
    5. qSetMessagePattern("%{message} :id=%{threadid} %{function}(%{line}):%{time [hh:mm:ss zzz]}");
    6. // 打印信息
    7. qDebug("This is a debug message.");
    8. qInfo("This is a info message.");
    9. qWarning("This is a warning message.");
    10. qCritical("This is a critical message.");
    11. //qFatal("This is a fatal message.");
    12. ...
    13. return app.exec();
    14. }

    输出信息

    1. This is a debug message. :id=815 main(217):[11:37:24 843]
    2. This is a info message. :id=815 main(218):[11:37:24 843]
    3. This is a warning message. :id=815 main(219):[11:37:24 844]
    4. 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_OUTPUT

    DEFINES += QT_NO_DEBUG_OUTPUT

    DEFINES += QT_NO_INFO_OUTPUT

  • 相关阅读:
    数据处理时代,数据质量建设才是企业的生存之道
    聊聊JedisFactory
    前端样式获取
    儒家、儒学、儒教之三个不同的概念
    Sentinel 哨兵数据 更新下载地址 2023年11月
    Rxjava学习(一)简单分析Rxjava调用流程
    Redis:Redis的数据结构、key的操作命令
    易点易动设备管理系统:提升设备巡检和维修效率,延长设备使用寿命的利器
    快速搭建本地服务器
    C语言每日一题(7):获得月份天数
  • 原文地址:https://blog.csdn.net/VistaTech/article/details/137710352