版权声明:本文为博主原创文章,未经博主允许不得转载。 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);