【Qt】QDebug和log4cplus的聯合使用
阿新 • • 發佈:2019-02-17
問題描述
專案開始時,只使用QDebug將除錯資訊列印到終端上。後期添加了日誌管理系統,比如log4cplus。如何在不修改列印語句,比如還使用qDebug,就能將日誌列印到檔案中。
解決方法
使用qInstallMessageHandler將除錯訊息重定向功能,在註冊的messageHandler函式中,加入日誌系統的介面。簡單兩步就能實現
步驟
1、實現QtMessageHandler函式
void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
//呼叫日誌系統介面
switch(type)
{
case QtDebugMsg:
LOG4CPLUS_DEBUG(Logger::getRoot(), LOG4CPLUS_TEXT(msg))
break;
case QtInfoMsg:
LOG4CPLUS_INFO(Logger::getRoot(), LOG4CPLUS_TEXT(msg))
case QtWarningMsg:
LOG4CPLUS_WARN(Logger::getRoot(), LOG4CPLUS_TEXT(msg))
break ;
case QtCriticalMsg:
LOG4CPLUS_ERROR(Logger::getRoot(), LOG4CPLUS_TEXT(msg))
break;
default:
break;
}
}
2、在main中註冊QtMessageHandle訊息處理函式
qInstallMessageHandler(messageHandler);