前言
有时候,会遇到一些不方便进行调试的场景,或者是在非调试模式下才会出现或更容易出现的问题,这个时候,日志打印就显得很必要了。
环境
- QT:5.15.2
- windows:win7及以上
- DebugView工具
调试日志打印
在QT中可以使用函数qInstallMessageHandler在main函数中注册日志信息打印函数,然后可以在打印函数中使用WinApi:OutputDebugString来将信息输出,并由DebugView接收并显示。所有采用QT自带打印函数的日志信息都会经过这个函数的处理,例如qDebug。 参考代码
如下:
void myMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
QString msgType = "";
switch (type)
{
case QtDebugMsg:
msgType = "Debug: ";
break;
case QtInfoMsg:
msgType = "Info: ";
break;
case QtWarningMsg:
msgType = "Warning: ";
break;
case QtCriticalMsg:
msgType = "Critical: ";
break;
case QtFatalMsg:
msgType = "Fatal: ";
break;
}
QString formatMsg = QTime::currentTime().toString() + "\t" + msgType + "\t" + msg + "\n";
OutputDebugString(formatMsg.toStdWString().c_str());
}
qInstallMessageHandler(myMessageHandler);
总结
也可以不用DebugView接收,转而在日志信息函数中将日志写入文件中保存。