记录一下,以备以后查阅。
如要进行更复杂的程序运行记录,需调用第三方库。
此方法为简单替换系统默认输出,需要在Debug模式下才可输出行号等信息。
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stdout, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
fprintf(stdout, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
abort();
}
fflush(stderr);
fflush(stdout);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qInstallMessageHandler(myMessageOutput); //更改系统默认输出
qDebug() << "Message handler test";
qWarning("sss");
qCritical("sss");
// qFatal("sss");//将会立即终止程序,以免出现更大的错误
qInfo("sss");
MainWindow w;
w.show();
return a.exec();
}