01 背景说明
做Qt开发经常需要用到qDebug、qWarning这些来查看输出信息,配合调试程序,但这些输出信息只输出到调试窗口,或者是程序执行的控制台窗口上。
今天我们来学习,如何捕捉所有的Qt调试信息,并统一对调试信息加上时间戳、消息等级、文件名、行号等,最后将消息内容保存到日志文件,方便日后程序的跟踪、和数据分析。
02 关键技术点
关键技术点是使用Qt提供的一个qInstallMessageHandler()函数,qInstallMessageHandler()用于注册消息处理函数,注册后消息处理函数将会捕捉所有的调试信息,并进行统一处理。函数原型和使用示例如下:
// 消息处理函数原型
typedef void (*QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QString );
QtMessageHandler qInstallMessageHandler(QtMessageHandler);
// 例子:
// 定义信息处理函数
void MyMessageHandler(QtMsgType eMsgType, const QMessageLogContext& logContext, const QString &text)
{
// ...
}
int main(int argc, char *argv[])
{
QCoreApplication a