天天看点

Qt日志重定向处理(回调函数方法)

qDebug()日志重定向处理

Qt有Debug、Warning、Info、Critical、Fatal五种级别的调试信息。

信号类型 信息等级 对应函数
qDebug 调试信息 qDebug()
qInfo 一般信息 qInfo()
qWarning 警告信息 qWarning()
qCritical 严重错误 qCritical()
qFatal 致命错误 qFatal()

实现方法

使用函数原型(qt库所有)

typedef void (*QtMsgHandler)(QtMsgType, const char *);
Q_CORE_EXPORT QtMsgHandler qInstallMsgHandler(QtMsgHandler);
           

(1)首先依据上面void (*QtMsgHandler)(QtMsgType, const char *);函数格式,定义一个自己的函数,函数内部就是自己处理日志的方法(如输出到终端、或是保存到文件)。定义如下:

void MessageHandler(QtMsgType type, const char *msg)
{
	//函数内部就是自己处理日志的方法(如输出到终端、或是保存到文件)
    LogMannage::instance()->msgOut(type,msg);	//我的处理方法(可无视)
}
           

注意:函数参数和返回内容需要一致,函数名任意。

(2)在所以输出日志前调用此函数:

参数为(1)中定义的函数指针,MessageHandler函数为回调函数,qt预留此注册函数便是为了函数回调操作。

(3)最后软件日志输出,如下操作:

调用上面代码后,qt底层会访问(2)中传入的函数指针,所以(1)中的函数将会被底层回调运行。

继续阅读