diff --git a/subsurface-desktop-main.cpp b/subsurface-desktop-main.cpp index 18c0f9bec..58da1fa43 100644 --- a/subsurface-desktop-main.cpp +++ b/subsurface-desktop-main.cpp @@ -29,12 +29,14 @@ static bool filesOnCommandLine = false; static void validateGL(); +static void messageHandler(QtMsgType type, const QMessageLogContext &ctx, const QString &msg); int main(int argc, char **argv) { int i; bool no_filenames = true; QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); + qInstallMessageHandler(messageHandler); QApplication *application = new QApplication(argc, argv); (void)application; QStringList files; @@ -215,3 +217,27 @@ exit: #endif } } + +// install this message handler primarily so that the Windows build can log to files +void messageHandler(QtMsgType type, const QMessageLogContext &ctx, const QString &msg) +{ + Q_UNUSED(ctx); + QByteArray localMsg = msg.toLocal8Bit(); + switch (type) { + case QtDebugMsg: + fprintf(stdout, "%s\n", localMsg.constData()); + break; + case QtInfoMsg: + fprintf(stdout, "%s\n", localMsg.constData()); + break; + case QtWarningMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + break; + case QtCriticalMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + break; + case QtFatalMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + abort(); + } +}