• 笔记: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

  • 相关阅读:
    父亲的北京车牌继承到儿子名下需要哪些手续?
    特征工程(六)—(2)利用LDA进行特征转换
    Spring Cloud Gateway实现限流
    运动装备哪些品牌好?运动装备好物推荐
    力扣刷题练习——统计数组中的元素
    微服务·数据一致-事务与分布式事务
    高校教务系统登录页面JS分析——广东海洋大学
    PCA数学原理
    5个免费的3D钣金CAD软件
    伦敦金实时行情中的震荡
  • 原文地址:https://blog.csdn.net/VistaTech/article/details/137710352