目标:实现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} | 系统启动后到当前时刻经过的时间 |
注意: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