From: Hannah von Reth Date: Tue, 17 Mar 2020 08:09:43 +0000 (+0100) Subject: [Logger] Ensure log file is flushed before crash X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~222^2^2~126^2~7 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=5a05c2d6cd007df6bab7b0f77457782037a5ba57;p=nextcloud-desktop.git [Logger] Ensure log file is flushed before crash --- diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index fade2084b..ba9f2fd87 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -47,12 +47,15 @@ static void mirallLogCatcher(QtMsgType type, const QMessageLogContext &ctx, cons std::cerr << qPrintable(qFormatLogMessage(type, ctx, message)) << std::endl; } + if(type == QtFatalMsg) { + if (!logger->isNoop()) { + logger->close(); + } #if defined(Q_OS_WIN) // Make application terminate in a way that can be caught by the crash reporter - if(type == QtFatalMsg) { Utility::crash(); - } #endif + } } @@ -138,6 +141,17 @@ void Logger::doLog(const QString &msg) emit logWindowLog(msg); } +void Logger::close() +{ + QMutexLocker lock(&_mutex); + if (_logstream) + { + _logstream->flush(); + _logFile.close(); + _logstream.reset(); + } +} + void Logger::mirallLog(const QString &message) { Log log_; diff --git a/src/libsync/logger.h b/src/libsync/logger.h index b5742ed44..5f32a8a0d 100644 --- a/src/libsync/logger.h +++ b/src/libsync/logger.h @@ -47,6 +47,7 @@ public: void log(Log log); void doLog(const QString &log); + void close(); static void mirallLog(const QString &message);