/**
* @brief MyMessageHandler
* @param type
* @param context
* @param msg
*/
void
MyMessageHandler(QtMsgType type,const QMessageLogContext &context,const QString &msg)
{
static QMutex mutex;
mutex.lock();
// QString strContext;
// strContext.sprintf("%s %d %s:\r\n\t",context.file,context.line,context.function);
// QString output = strContext + msg + "\r\n";
QString output = msg + "\r\n";
if(type == QtDebugMsg)
{
QFile file("debug_redirect.log");
file.open(QFile::WriteOnly | QFile::Append);
file.write(output.toUtf8());
file.close();
}
if(type == QtWarningMsg)
{
QFile file("warning_redirect.log");
file.open(QFile::WriteOnly|QFile::Append);
file.write(output.toUtf8());
file.close();
}
if(type == QtCriticalMsg)
{
QFile file("critical_redirect.log");
file.open(QFile::WriteOnly | QFile::Append);
file.write(output.toUtf8());
file.close();
}
if(type == QtFatalMsg)
{
QFile file("fatal_redirect.log");
file.open(QFile::WriteOnly | QFile::Append);
file.write(output.toUtf8());
file.close();
}
printf("%s",output.toUtf8().data());
mutex.unlock();
}
int main(int argc, char **argv)
{
qInstallMessageHandler(MyMessageHandler);
QApplication app(argc, argv);
MainWindow win;
win.init();
win.show();
return app.exec();
}
qDebug重定向输出文件
Qt日志处理机制
最新推荐文章于 2025-09-20 12:02:12 发布
本文介绍了一个自定义的Qt消息处理函数MyMessageHandler,该函数能够根据不同的消息类型将日志输出到对应的文件中,并通过mutex确保线程安全。同时,主函数中展示了如何安装此消息处理器。
3002

被折叠的 条评论
为什么被折叠?



