笔记:Qt开发之定制化qDebug()函数
目标:实现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_OUTPUT
DEFINES += QT_NO_DEBUG_OUTPUT
DEFINES += QT_NO_INFO_OUTPUT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律