src/main.cpp

changeset 254
b0adda0053c5
parent 245
f58543ef3fed
--- 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) {

mercurial