程序员每天必做的事情就是写 bug,那么调试信息就是必不可少的,网上博文大多是讲如何将调试信息保存至本地,但有时候我想记录到本地,并打印至ui 界面,或者其它地方,网上却没有很好的博文去介绍这个怎么做,所以只能想办法了,自己做了。
首先是调试消息处理的类
//MyDebug.cpp
#include "MyDebug.h"
#include <QMutex>
#include <iostream>
#include <QDateTime>
#include <QCoreApplication>
#include <QFile>
#include <QDir>
#include <QTextStream>
//接收调试信息的函数
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
static QMutex mutex;
QMutexLocker lock(&mutex);
QString text;
switch(type)
{
//如果是debug信息,那么直接打印至应用程序输出,然后退出本函数
case QtDebugMsg:
std::cout << msg.toStdString() << std::endl;
return ;
//如果是警告,或者是下面的其他消息,则继续执行后面的数据处理
case QtWarningMsg:
text = QString("Warning...............................");
break;
case QtCriticalMsg:
text = QString("Critical..............................");
break;
case QtFatalMsg:
text = QString("Fatal.................................");
break;
default:
text = QString("Default...............................");
break;
}
//获取单例
MyDebug *instance = MyDebug::Instance();
//消息输出位置
QString context_info = QString("File: %1\r\nFunc: %2\r\nLine: %3")
.arg(QString(context.file))
.arg(QString(context.function))
.arg(context.line);