天天看點

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)中的函數将會被底層回調運作。

繼續閱讀