diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index 5e885d7af..a9ffad0f3 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -37,6 +37,7 @@ namespace { constexpr int CrashLogSize = 20; constexpr auto MaxLogLinesCount = 50000; +constexpr auto MaxLogLinesBeforeFlush = 10; static bool compressLog(const QString &originalName, const QString &targetName) { @@ -145,8 +146,13 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString if (_logstream) { (*_logstream) << msg << "\n"; - if (_doFileFlush) + ++_linesCounter; + if (_doFileFlush || + _linesCounter >= MaxLogLinesBeforeFlush || + type == QtMsgType::QtWarningMsg || type == QtMsgType::QtCriticalMsg || type == QtMsgType::QtFatalMsg) { _logstream->flush(); + _linesCounter = 0; + } } if (_permanentDeleteLogStream && ctx.category && strcmp(ctx.category, lcPermanentLog().categoryName()) == 0) { (*_permanentDeleteLogStream) << msg << "\n"; diff --git a/src/libsync/logger.h b/src/libsync/logger.h index 2d9dce319..b913678b4 100644 --- a/src/libsync/logger.h +++ b/src/libsync/logger.h @@ -110,6 +110,7 @@ private: QFile _logFile; bool _doFileFlush = false; + int _linesCounter = 0; int _logExpire = 0; bool _logDebug = false; QScopedPointer _logstream;