【Qt】QDebug和log4cplus的联合使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010168781/article/details/82454690

问题描述

项目开始时,只使用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);

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/82454690