1. 程式人生 > >【Qt】QDebug和log4cplus的聯合使用

【Qt】QDebug和log4cplus的聯合使用

問題描述

專案開始時,只使用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);