--- a/src/main.cpp Fri Jun 03 16:32:18 2022 +0200 +++ b/src/main.cpp Sun Jun 05 14:50:33 2022 +0200 @@ -24,12 +24,39 @@ #include "MainWindow.h" #include "config.h" +void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) +{ + static QMutex mutex; + QMutexLocker lock(&mutex); + + static QFile logFile("bmsapp.log"); + static bool logFileIsOpen = logFile.open(QIODevice::Append | QIODevice::Text); + + fprintf(stderr, "%s\n", qPrintable(qFormatLogMessage(type, context, msg))); + + if ((type != QtDebugMsg) && logFileIsOpen) { + QDateTime dateTime(QDateTime::currentDateTime()); + QString timeStr(dateTime.toString("dd-MM-yyyy HH:mm:ss:zzz")); + logFile.write(timeStr.toUtf8()); + switch (type) { + case QtInfoMsg: logFile.write(" INFO "); break; + case QtDebugMsg: logFile.write(" DEBUG "); break; + case QtWarningMsg: logFile.write(" WARN "); break; + case QtCriticalMsg: logFile.write(" CRIT "); break; + case QtFatalMsg: logFile.write(" FATAL "); break; + } + logFile.write(qFormatLogMessage(type, context, msg).toUtf8() + '\n'); + logFile.flush(); + } +} + int main(int argc, char *argv[]) { QApplication app(argc, argv); QString locale = QLocale::system().name(); + qInstallMessageHandler(myMessageOutput); app.setApplicationName("bmsapp"); app.setApplicationVersion(VERSIONSTRING); app.setOrganizationName("mbse"); @@ -71,14 +98,15 @@ } } - qDebug().noquote() << "Starting" << app.applicationName() << app.applicationVersion() << QDateTime::currentDateTime().toString(); + qInfo().noquote() << "Starting" << app.applicationName() << app.applicationVersion(); MainWindow w(parser.isSet(useDevelopOption), parser.isSet(startConfigOption)); w.show(); try { auto mainAppReturnValue = app.exec(); - qDebug().noquote() << "Finished" << app.applicationName() << app.applicationVersion() << QDateTime::currentDateTime().toString(); + qInfo().noquote() << "Finished" << app.applicationName() << app.applicationVersion(); + qInfo() << ""; return mainAppReturnValue; } catch (const QString &error) {